提問:静态方法除了可以直接用类、类的对象调用,还有什么调用形式?
| 形式 | 代碼示例 | 場景 |
|---|---|---|
| 類名調用(標準) | Math.max(1,2) | 最常用,語義清晰 |
| 對象調用(合法但不推薦) | new Math().max(1,2) | 編譯器按類型解析,會給警告 |
| 方法引用 (Java 8+) | list.stream().map(String::valueOf) | 函數式編程,傳遞行為 |
| 反射調用 | Method m = Math.class.getMethod("max", int.class, int.class); m.invoke(null, 1, 2); | 框架開發、動態代理、插件系統 |
| 靜態導入 | import static java.lang.Math.*; max(1,2); | 工具類常用方法,簡化代碼 |
this 不可用。native static 同理,只是實現委託給 JNI。static,構造器 private 防實例化。ThreadLocal 或傳入參數。Math、Collections、Assert 等極常用類開放。理解「靜態綁定、無 this、可反射、可方法引用」,靜態方法就不再只是「類名調用」那麼簡單。