2014-09-05 52 views
0

例如,我有類:如何獲得一般類在Java中

SuperClass.java:

public class SuperClass<A extends ClientsDTO> { 

    ... 
    private A getChildsGenericClass{ 
     //??? 
    } 
} 

User.java

class User extends SuperClass<UserDTO> { 
    ... 
} 

所以,我怎麼能訪問UserDTO的類SuperClassgetChildsGenericClass的方法?

+0

我知道,可以使getChildGenericClass抽象並在子類中重寫它,返回新的UserDTO,但它不是我希望的最佳解決方案。 – Fr0stDev1 2014-09-05 06:24:05

+0

當你說要訪問UserDTO類時,你試圖訪問什麼? – coder 2014-09-05 06:24:17

+0

@coder,例如,UserDTO.class – Fr0stDev1 2014-09-05 06:27:22

回答

0
public A example; //this is variable from you can get Class 
private Class<Object> getChildsGenericClass() { 
     return (Class)((ParameterizedType) 
       (this.getClass().getGenericSuperclass())) 
             .getActualTypeArguments()[0]; 
    } 

那真的有效!

0

您沒有將UserDTO的實例傳遞給超類。
沒有實例,你想訪問哪個對象字段?

當你要訪問UserDTO類,你可以隨便寫:

Class c = UserDTO.class; 
在其他情況下

,也許你想是這樣的:

public class SuperClass<T extends ClientsDTO> { 

    private Class<T> m_clz; 
    public NewClass(Class<T> p_clz) 
    { 
     m_clz = p_clz; 
    } 

    private Class<T> getChildsGenericClass() 
    { 
     return m_clz; 
    } 

}

+0

不,我想訪問一個類,在那種情況下是UserDTO。無論如何,我通過反思做到了。 – Fr0stDev1 2014-09-05 07:19:01