2014-02-11 16 views
1

我使用的工具,其生成用於不同結構differrenct類我使用需要根據在通用類型

例如,它可以創建兩個類這樣

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() 
} 

你可以請建議如何實現它最好的方式,而不使用反射。

+0

你做錯了。靜態方法甚至不適用於泛型。爲什麼它不是一個實例方法,並且已經在'TypeSupportImpl'中定義了? – zapl

回答

0

即使有反思,你也無法做到。類型擦除意味着在運行時,您將無法看到類型參數是什麼,即使您將其作爲參數傳遞(請參閱EnumSet的構建器),您必須使用反射,因爲static元素在編譯時綁定到特定的類型。