我试图将子类作为参数传递,然后创建它的实例,但是我在实例化转换类(不兼容类型)的那一行上收到错误消息。如果我尝试使用transClass trans = new transClass()实例化,它将抱怨transClass未知。这是我正在使用的代码。

abstract class Transformation {
  abstract public Object transform(Object obj);
}
class MyTransformation extends Transformation {
  public Object transform(Object obj){
    // do stuff to obj
    return obj;
  }
}

class AnotherClass {
  public doSomething(Object obj, Class<Transformation> transClass){
    // do more stuff to obj
    Transformation trans = new transClass();  // fails with "Incompatible Types", referring to 'Transformation' and 'transClass'
    // transClass trans = new transClass(); // alternate attempt, also fails with "Unknown Type" on 'transClass'
    return trans.transform(obj);
  }
}

最佳答案

您应该使用Class#newInstance

public <T extends Transformation> Object doSomething(Object obj, Class<T> transClass)
    throws Exception {
    // do more stuff to obj
    Transformation trans = transClass.newInstance();
    return trans.transform(obj);
}

关于java - 如何调用作为参数传递的类的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23704675/

10-12 04:11