当前位置: 首页 > 知识库问答 >
问题:

如何用throw语句组合两个返回类型不同但主体相同的方法?

裴嘉许
2023-03-14

我有两个数据类型不同的方法,但正文相同。我没有使用任何返回。我只使用这些方法来引发异常。有没有什么方法可以将这两种方法结合起来,或者有什么方法可以优化代码?

public MyDataType1 method1(MyArg arg){
    /* some logic */
    throw new CustomException();
}
public MyDataType2 method2(MyArg arg){
    /* some logic, same as above method logic*/
    throw new CustomException();
}

PS:我不想使用接口或一些具有普通逻辑的新方法。

共有1个答案

相温文
2023-03-14

它是一个鲜为人知的语言特性,称为“方法”:)

public MyDataType1 method1(MyArg arg){
    logic();
    throw new CustomException();
}

public MyDataType2 method2(MyArg arg){
    logic();
    throw new CustomException();
}

private void logic() {
    /* some logic */
} 
 类似资料:
  • 我的两个方法中的操作是相同的,但是输入参数类型不同,那么我该如何优化这两个方法,似乎没有那么重复?因为它们的操作是相同的,但参数类型不同,我该怎么做才能使这段代码更优雅呢?

  • 我可以看到它不工作,因为我尝试了它。我只是无法解释为什么一定要这样。 第二个方法来自一个类,该类是实现第一个getValue()方法的类的子类。 为什么同名不足以覆盖该方法?我想到的唯一论点是,它将反对“是一个”关系,因为用A扩展的第二个方法的类必须具有与A相同的能力,如果你重写返回类型,你就打破了那个法律,对吧?

  • 我说的是Java,但这个概念也适用于其他语言-- 我们在同一个类上有两个方法,它们具有相同的基本功能,但提供不同的返回类型。这两种方法都会给你所有的东西,但一个得到一个可以提供对所有东西的访问的可迭代的,一个得到一个包含所有东西的集合。 我们知道你不能这样做(因为它不会编译): 那么,有人想过如何命名这些方法吗?这似乎是一个简单的解决方法: 然而,这显然有些冗长,可能不是最好的解决方案。我问的这个

  • 如果请求接受头的类型为application/JSON,我希望能够发送类似JSON列表的列表,但如果请求头的类型为application/avro,则以字节数组(avro格式)发送它。这应该针对相同的RESTendpoint,如/某物/员工。我是否可以使用相同的方法但返回类型不同,Spring Boot是否会查看accept标头并正确决定调用哪个方法? 退货类型应该是什么?这是一种没有任何类型的反

  • 我使用一个Android库,它要求我创建两个类,每个类继承自不同的类 (具有公共基类) 现在我有这个代码: 我必须复制这个类来创建一个扩展,即使我的两个类共享完全相同的代码。 我简化了示例的代码,但重复可能很重要 我决定将代码放在这两个类之外的静态方法中,并在类重写的方法中调用它们,但我认为必须有一种更干净的方法来做到这一点。 你能帮我解决这个问题吗? 和都继承自。

  • 我在Java中有两个几乎相同的方法。唯一的区别是它们有不同的参数类型。它们使用泛型并返回输入参数的类型T。我怎样才能摆脱重复的代码?下面是我的两个方法。最后,它们都使用不同的类型调用Spring。否则,方法是相同的。