Java 从不同的对象获取相同的字段

Java 从不同的对象获取相同的字段,java,generics,Java,Generics,我想在Java中实现一个通用方法,该方法接收一个对象并获得相同的属性,而不管它是什么类型的对象 例如:我有两个对象,car和house,并且知道这些对象具有属性id。 我能写一个这样的方法吗 public void method(Object x) { x.getId(); } 除非使用反射,否则无法执行此操作,反射非常容易发生异常 public void method(Object o) throws NoSuchFieldException, SecurityException {

我想在Java中实现一个通用方法,该方法接收一个对象并获得相同的属性,而不管它是什么类型的对象

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

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

除非使用反射,否则无法执行此操作,反射非常容易发生异常

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();
}
可识别的公共接口{
public int getId();
}
公共无效方法(T anIdentifiableObject){
anIdentifiableObject.getId();
} 
公共无效方法(可识别的可识别对象){
anIdentifiableObject.getId();
}

您可以通过接口或抽象类来实现这一点。您真的、真的、真的应该为此使用接口。