[英]java: how can I pass a class and call its static members?
正如標題所說。 我試圖將一個類傳遞給一個函數
f(MyType.class)
哪里
class MyType {
static int g() {...}
}
可以接收類的功能
void h(Class<MyType> cls) {...}
以某種方式訪問此方法?
給定函數h要求傳遞MyType類,我看不出沒有理由不使用MyType.g();
的靜態訪問形式MyType.g();
您無法調用類的g()
方法,因為該參數將依賴於Class
類型。 您只能調用Class
提供的方法。
通過傳遞MyType
實例並在其上調用方法實例,您嘗試做的事情似乎更加自然。
如果在多個類中定義了g()
,請在接口中定義此方法,並使這些類實現它。
從技術上講,您可以使用反射來做到這一點:
Class klass = ...;
Method m = klass.getDeclaredMethod(methodName, paramtypes);
m.invoke(null, args)
但這對於Java來說並不自然,最好傳入具有這種方法的某些接口的函數對象:
interface MyType {
int g();
}
void h(MyType myType) {
myType.g();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.