2012-04-04 31 views
1

我想在hashmap中將類傳遞爲值。我需要使用特定的鍵來獲取類(值),併爲檢索到的類實例化一個對象。但爲了創建對象,我需要傳遞參數。在HashMap中傳遞類以及如何使用密鑰獲取值

當我從另一個傳遞鍵值的類調用getExpo方法時,我的流程就到了這裏。使用鍵值,我需要得到正確的類,並使用該類需要實例化對象並需要返回該對象。爲了創建對象,我需要傳遞參數,因爲類沒有默認的構造函數。

這一程序的目的是在未來,我需要添加另一個關鍵,對價值,我shouldnot做任何改變........實現是相同的所有類即創建對象

我的類放在這裏

public class ExampleFactory { 

    static { 
     HashMap<String,Class<?>> hmap = new HashMap<String,Class<?>>(); 

     hmap.put("jxpath", JXPathExpression.class); 
     hmap.put("spel", SpelExpression.class); 
    } 

    public Predicate getExpo(String key,String expression) { 

     // Need to get the class using key value and instantiate the object for the class 
     // but i need to pass parameters in order to create the object.something like this 

     //JXPathExpression object = new JXPathExpression(expression); 
     return null; 
    } 
} 

回答

3

嘗試

Class aClass = hmap.get(key); 
Constructor constructor = aClass.getConstructor(new Class[]{String.class}); 
return (Predicate) constructor.newInstance(expression); 
+0

謝謝您的回覆.......當我在getEcho方法....類ACLASS = hmap.get實現它(鍵);我在hmap中得到了錯誤,因爲我在靜態塊中實現了hashmap,我無法訪問它。 – Jessie 2012-04-04 19:17:11

+0

我需要另一個幫助.......對於一些類,我需要傳遞兩個參數,例如:(字符串,類類型)eg:(expression,Boolean.class),如何實現它?以及如何選擇執行哪個構造函數......一個類只有一個字符串只有一個參數.......另一個類有兩個參數String和Class Jessie 2012-04-04 19:22:07

+1

http://java.sun.com/developer/technicalArticles/ ALT /反射/ – Luca 2012-04-05 06:27:03