我想知道是否可以要求java方法参数是有限类型集中的任何类型。例如,我正在使用一个库,其中有两个(或更多)类型具有公共方法,但它们在类型层次结构中的最低公共祖先是Object。我这里的意思是:
public interface A {
void myMethod();
}
public interface B {
void myMethod();
}
...
public void useMyMethod(A a) {
// code duplication
}
public void useMyMethod(B b) {
// code duplication
}我想避免代码重复。我的想法是这样的:
public void useMyMethod(A|B obj){
obj.myMethod();
}在java中已经有了类似类型的语法。例如:
try{
//fail
} catch (IllegalArgumentException | IllegalStateException e){
// use e safely here
}显然,这是不可能的。如何使用这种不可编辑的类型层次结构来实现设计良好的代码?
https://stackoverflow.com/questions/27503251
复制相似问题