2011-06-03 131 views
0

現在存在一個類下面:如何在Java中使用泛型的反射構造函數?

 
class A{ 
    private A(HashMap map){ 

    } 
} 

我怎樣才能構造函數的參數是與反思泛型?

編輯:編輯的問題。

+2

您還沒有在這裏使用模板或泛型。您是否打算讓仿製藥脫離您的榜樣? – 2011-06-03 09:43:04

+0

你的意思是你可以得到有關構造函數的泛型信息?例如私人A(地圖地圖)瞭解K和V? – Bohemian 2011-06-03 10:13:45

回答

1

您不能在Java中使用模板。您可以使用泛型,您可以從構造函數獲取該信息。

Constructor aConstructor = A.class.getConstructors()[0]; 
Class[] parameterTypes = aConstructor.getParameterTypes(); 
System.out.println(Arrays.toString(parameterTypes)); // prints [java.util.HashMap] 

順便說一句:是否有任何理由必須是一個HashMap而不是一個地圖?

+0

'getConstructors()'在這裏不起作用,因爲它只返回'public'構造函數。根據上面發佈的示例類A,使用'getDeclaredConstructors()'應該對其進行排序。 – 2011-06-03 10:00:23

+0

@Sanjay,你是對的。我假設一個構造函數是私有的,因爲有一個很好的理由,即你不希望能夠從另一個類訪問它。一個更簡單的方法是將'public'作爲其他類使用的構造函數。 – 2011-06-03 10:19:17

+0

@Sanjay @Peter謝謝你的幫助〜我最近誤解了一些東西。所以我想要的都是錯的。 – mudoot 2011-06-05 04:34:35