Tit*_*lum 0 java generics polymorphism dynamic-typing
[编辑]:这个问题与我无法控制的类型有关。因此,使它们无法继承超类或实现接口是不可能的。我希望能够做到这一点而无需包装类型。
我想编写一个方法,将包含特定方法的所有对象接受为参数。
例如,我们有2种完全不同的类型,它们都包含get具有相同签名的方法:
public class TypeOne {
public int get() { /* Some implementation */ }
}
public class TypeTwo {
public int get() { /* Some other implementation */ }
}
Run Code Online (Sandbox Code Playgroud)
如何编写可以接受这两种类型的方法?
public static int callGetOnObject(GettableObject gettableObject) {
return gettableObject.get();
}
Run Code Online (Sandbox Code Playgroud)
首先使方法成为非静态方法,其次使两个类都实现具有该get方法的接口。最后,更改callGetOnObject为接受实现该接口的类的实例:
public interface Getter {
int get();
}
public class TypeOne implements Getter {
public int get() { /* Some implementation */ }
}
public class TypeTwo implements Getter {
public int get() { /* Some other implementation */ }
}
Run Code Online (Sandbox Code Playgroud)
然后:
public static int callGetOnObject(Getter gettableObject) {
return gettableObject.get();
}
Run Code Online (Sandbox Code Playgroud)
编辑:
由于问题已被修改,因此这是新的答案:如果您不控制此代码并且不愿意包装它,那么您就不走运了:没办法做到这一点。
| 归档时间: |
|
| 查看次数: |
28 次 |
| 最近记录: |