需要根据Generic类中的类型创建不同的类

时间:2014-02-11 19:18:38

标签: java

我正在使用的工具为我正在使用的不同结构生成不同的类

例如,它可以像这样创建两个类

  class TypeSupportImpl {
      void callme()
      {
          System.out.println("I an here");
      }

      void test()
      {

      }
  }

 public class StringReader extends  TypeSupportImpl
 {
     void callme()
     {
         System.out.println("HelloReader an here");
     }

     void test()
     {

     }

     public static String get_name() {
         String s = "hello"; 
         return s ;
     }
 }

public class HelloReader extends  TypeSupportImpl
{
    void callme()
    {
        System.out.println("HelloReader an here");
    }

    void test()
    {

    }

    public static String get_name() {
        String s = "hello"; 
        return s ;
    }
}

现在我想为这个类编写一个通用的包装器。我希望通用包装器以这样的方式运行:如果用户传递Hello作为类型,它应该创建Helloreader的对象。如果用户位于String,则应创建StringReader对象。

public class TestCode<T > {
    //if T= Hello
    HelloReader.get_name();
    //if T== String
    StringReader.get_name()
}

请您建议如何在不使用反射的情况下达到最佳效果。

1 个答案:

答案 0 :(得分:0)

即使有了反思,你根本做不到。类型擦除意味着在运行时,您将无法看到类型参数是什么,即使您将其作为参数传递(请参阅EnumSet的构建器),您必须使用反射,因为static元素在编译时绑定到特定类型。