簡體   English   中英

java:如何傳遞一個類並調用其靜態成員?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM