【问题标题】:How to pass a Class as method parameter?如何将类作为方法参数传递?
【发布时间】:2015-01-22 10:49:36
【问题描述】:

我有以下类层次结构:

超类和子类:

public class SuperClass(){

// attributes and accessors


public class Class1() extends SuperClass {

// attributes and accessors
}

public class Class2() extends SuperClass {

// attributes and accessors
}

public class Class3() extends SuperClass {

// attributes and accessors
}

我在其他类中也有一个方法来创建子类:

SuperClass createMySubclass(){

}

我想知道如何在这个方法参数中传递我想要创建的类并创建他的实例?我不知道该怎么做:

我想做类似的事情:

    SuperClass createMySubclass(Class myClass){

      SuperClass type = new myClass.getConstructor();

    }

有可能吗?

【问题讨论】:

  • 是的 -- 抱歉,要求一个词回答的问题并不是很好的问题。
  • 另外,类对象上没有 getConstructor() 方法。您可以获取构造函数列表,也可以通过提供完整签名找到确切的构造函数。
  • 当然。当您调用该方法时,您将传入一个实际值,并且该方法参数将被解析。另外,getConstructor() 是不必要的。
  • 不能这样使用new,而且类定义的类名后面不能有括号。

标签: java class introspection


【解决方案1】:

鉴于您的场景,由于每个类都继承自 SuperClass,您可以拥有以 SuperClass 作为参数的方法,并且它可以接收其任何子类。

例子:

   SuperClass createMySubclass(SuperClass myClass){

      SuperClass type = myClass;

    }

在你的主目录的某个地方,你应该有这样的东西:

Class1 mySubClass = new Class1();
SuperClass mySuperClass = new SuperClass();
mySuperClass.createMySubClass(mySubClass);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多