cin*_*cin 1 java generics methods static
我想在类上访问静态方法,但是要在泛型中传递该类.
我做了以下事情:
class Base{
public static String getStaticName(){
return "Base";
}
}
class Child extends Base{
public static String getStaticName(){
return "Child";
}
}
class StaticAccessor{
public static <T extends Base>String getName(Class<T> clazz){
return T.getStaticName();
}
}
StaticAccessor.getName() // --> "Base"
Run Code Online (Sandbox Code Playgroud)
这将返回"基地",但我想要的是"孩子"任何人没有反思的建议吗?
如果没有反射,你不能这样做,因为类型T在运行时被删除(意味着它将被减少到它的下限,这是Base).
既然你做有权访问Class<T>你可以用反射做到这一点,但是:
return (String) clazz.getMethod("getStaticName").invoke(null);
Run Code Online (Sandbox Code Playgroud)
请注意,我认为这样的代码是代码味道,而且它非常脆弱.你能告诉我们你为什么需要这个吗?