从不同对象

时间:2015-05-29 17:27:42

标签: java generics

我想在Java中执行一个泛型方法,它接收一个对象并获得相同的属性,无论它是什么类型的对象。

例如:我有两个对象carhouse,并且知道这些对象具有 id 属性。 我可以写一个这样的方法吗?

public void method(Object x) {
  x.getId();
} 

1 个答案:

答案 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();
}