我有以下两种方式
public class ObjectA {
int id ;
String name;
}
public class objectB {
Long id;
String name;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够创建一个将由这两个对象实现的接口'AnObject'.这个界面怎么样?
public interface AnObject {
public <type?> getId() ;
public String getName();
}
Run Code Online (Sandbox Code Playgroud)
ID的getter中的类型应该是什么?
Rob*_*ahl 18
首先,不要说出来Object.Object是Java所有其他类的隐式基类.从技术上讲,Object只要您不将其放入包中java.lang,就可以命名您的界面,但这会产生很大的误导性.
为提供不同的返回类型getId()中ObjectA和ObjectB,使用泛型:
public interface MyObject<T> {
T getId();
String getName();
}
public class ObjectA implements MyObject<Integer> {
@Override
public Integer getId() {
return 0;
}
@Override
public String getName() {
return "A";
}
}
public class ObjectB implements MyObject<Long> {
@Override
public Long getId() {
return 0;
}
@Override
public String getName() {
return "B";
}
}
Run Code Online (Sandbox Code Playgroud)
如果getId()总是返回一个数字,你也可以定义MyObject为MyObject<T extends Number>.请注意,您不能使用本机类型int和long泛型; 你必须使用盒装类型Integer和Long.
| 归档时间: |
|
| 查看次数: |
5120 次 |
| 最近记录: |