2014-09-29 54 views
0

泛型類型,我有以下幾點:內部參數

public <T extends Node> T create(Class<T> classType, String id, Transaction t){ 
    T obj; 
    try { 
     NodeKey nodeKey = new NodeKey(classType, id); 
     obj = classType.getConstructor(NodeKey.class, Transaction.class).newInstance(nodeKey, t); 
     add(obj, t); 
     return obj; 
    } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return null; 
} 

有你可以看到,我「構建」 NodeKey nodeKey = new NodeKey(classType, id);;我想能夠超載上面的方法接受只是NodeKeyTransaction,但我不知道我怎麼能告訴泛型T型是由像nodeKey.getUserType()方法返回的類。

這可能嗎?

+0

你想添加一個通用參數到'NodeKey'嗎?因此,'NodeKey nodeKey = new NodeKey (classType,id);'。 (和以前一樣,我建議避免反射。) – 2014-09-29 12:40:16

回答

1

如果NodeKey本身沒有參數化,它的任何方法都不可能明確指定類型。你必須使用不安全的強制轉換來找到解決方法。

+0

你是對的,我可以參數化NodeKey! 如果您使用NodeKey的快速示例進行編輯,我會接受您的答案 – Lesto 2014-09-29 12:42:49