我有这种方法:

 public static Object filterObject(Object object, String objectName){
      ...
 }


这是我的称呼方式:

Entity1 entity1 = new Entity1();
//Call some setters
Test.filterObject(entity1, "Entity1");


我想将该方法中的Object强制转换为Entity1。我怎样才能做到这一点?

编辑
我的问题是如何将object转换为objectName类的实例?

最佳答案

您应该使用泛型。

例如,

public static <T> T filterObject(T object, String objectName) {
  ...
}

Entity1 entity1 = new Entity();
Test.filter(entity1, "Entity1");


通过使用泛型,您不需要强制转换,并且可以避免ClassCastException。基本上T可以替换为您对象的类型。

此外,如果要保证传递的对象是另一种类型的子类,则还可以使用以下内容。

public static <T extends ParentClass> T filterObject(T object, String objectName) {
  ...
}


编辑:由于上述原因,如果不需要不同类型的混合袋,则应在铸造时使用泛型。有关是否应使用泛型的详细说明,请参阅此帖子。 https://stackoverflow.com/a/11402351/5085407

09-30 11:13