Как объединить два метода с разным типом возврата, но с тем же телом с оператором throw? - PullRequest
1 голос
/ 19 марта 2020

У меня есть два метода с разными типами данных, но с одинаковым телом. Я не использую какие-либо return. Я использую эти методы только для исключения. Есть ли способ объединить эти два метода или каким-либо образом оптимизировать код?

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: я не хочу использовать интерфейс или какой-то новый метод с общими логи c.

Ответы [ 3 ]

1 голос
/ 19 марта 2020

Используйте интерфейс для обеспечения совместимости

interface DataType{
}

class MyDataType1 implements DataType{
}

class MyDataType2 implements DataType{
}

Вы сможете

public DataType method1(MyArg arg){
    /* some logic */
    throw new CustomException();
}
0 голосов
/ 19 марта 2020

Попробуйте сделать это, как указано ниже:

interface MyDataType {

}

class MyDataType1 implements MyDataType {

}

class MyDataType2 implements MyDataType {

}

public MyDataType method1(MyArg arg){
    commonLogic(arg);
    throw new CustomException();
}

public MyDataType method2(MyArg arg){
    commonLogic(arg);
    throw new CustomException();
}

public MyDataType commonLogic(MyArg arg){
    //...your logic here
}

Тип возврата commonLogic(MyArg arg) может быть в соответствии с вашей логикой c.

0 голосов
/ 19 марта 2020

Это малоизвестная языковая функция, называемая «метод»:)

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

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

private void logic() {
    /* some logic */
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...