使用变量类型来定义另一个变量类型

时间:2011-10-17 00:59:13

标签: java

我试图使用一个变量的类型来定义另一个变量的类型 我知道我可以将所有类型放入枚举中,然后使用序号和开关/案例进行选择,但我想知道这是否更简单。

下面是一个小例子:

public void loadRotation(TetrominoType type) {
TetrominoType new = new type.class();
}

TetroiminoType type = new RedTetro();
this.loadRotation(type);

RedTetro显然扩展了TetrminoType

我知道这不起作用,但希望你能理解我正在做的事情。

4 个答案:

答案 0 :(得分:1)

您可以使用instanceof评估者:

public class MainClass {
  public static void main(String[] a) {

    String s = "Hello";
    if (s instanceof java.lang.String) {
      System.out.println("is a String");
    }
}
}

答案 1 :(得分:1)

您可以使用Java反射根据您拥有的变量类型重写类型。

您可以在此处http://java.sun.com/developer/technicalArticles/ALT/Reflection/找到更多信息并在此处找到类似的问题Dynamic variables with given type

应该是利用类型的基类设置基本类型然后使用反射来创建具有新类型的变量的情况。

答案 2 :(得分:1)

反思是答案。

如果您正在讨论一个具有零参数构造函数的类,那么它非常直接:

MyClass c = new MyClass();
MyClass c2 = c.getClass().newInstance();

如果需要使用带参数的构造函数,则必须提取所需的Constructor并使用它。 Oracle在此提供了一个教程:

http://download.oracle.com/javase/tutorial/reflect/member/ctorInstance.html

答案 3 :(得分:0)

您需要查找工厂设计模式。