我想在Java中执行一个泛型方法,它接收一个对象并获得相同的属性,无论它是什么类型的对象。
例如:我有两个对象car
和house
,并且知道这些对象具有 id 属性。
我可以写一个这样的方法吗?
public void method(Object x) {
x.getId();
}
答案 0 :(得分:1)
除非使用反射,否则你不能这样做,这很容易发生异常。
public void method(Object o) throws NoSuchFieldException, SecurityException {
Field idField = o.getClass().getDeclaredField("id");
int id = idField.getInt(o);
}
但解决此类操作的常用方法是使用多态或泛型方法和接口。
public interface Identifiable {
public int getId();
}
public <T extends Identifiable> void method(T anIdentifiableObject) {
anIdentifiableObject.getId();
}
public void method(Identifiable anIdentifiableObject) {
anIdentifiableObject.getId();
}