首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 靜態方法深度理解:不止類名調用,還有反射、方法引用、隱式靜態導入

     編輯:程式設計綜合問答

提問:静态方法除了可以直接用类、类的对象调用,还有什么调用形式?

四種調用形式

形式代碼示例場景
類名調用(標準)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。

最佳實踐

  1. 工具類方法定為 static,構造器 private 防實例化。
  2. 避免在靜態方法中持有狀態(線程不安全),改用 ThreadLocal 或傳入參數。
  3. 大量靜態導入降低可讀性,僅對 Math、Collections、Assert 等極常用類開放。

理解「靜態綁定、無 this、可反射、可方法引用」,靜態方法就不再只是「類名調用」那麼簡單。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved