生活随笔
收集整理的這篇文章主要介紹了
java Object类型的参数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通常提供API函數的時候,會實現多種參數類型,比如:log4j里面獲取log對象,可以傳string,當然也可以更方便的傳class進去自動轉string
[java] view plaincopyprint?
public?static?Logger?getLogger(String?name)??{??????return?LogManager.getLogger(name);??}????public?static?Logger?getLogger(Class?clazz)??{??????return?LogManager.getLogger(clazz.getName());??}?? public static Logger getLogger(String name){return LogManager.getLogger(name);}public static Logger getLogger(Class clazz){return LogManager.getLogger(clazz.getName());}
?
?
1.下面這個例子重載了參數類型為Object,? 我們調用的時候傳入一個String參數,既滿足Object又滿足String,結果會如何呢?
[java] view plaincopyprint?
public?class?Overload?{????????public?static?void?log(Object?o)?{??????????System.out.println(”log?-object”);??????}????????????public?static?void?log(String?o)?{??????????System.out.println(”log?-string”);??????}????????????public?static?void?main(String[]?args)?{??????????log(”how”);????????}??}??public class Overload {public static void log(Object o) {System.out.println("log -object");}public static void log(String o) {System.out.println("log -string");}public static void main(String[] args) {log("how");}
}
?//輸出? log -string
?
2. 那么下面改掉調用的方法,new出一個String的Object對象來,結果如何呢?
[java] view plaincopyprint?
public?static?void?main(String[]?args)?{??????Object?a?=?new?String(“xx”);??????log(a);??}?? public static void main(String[] args) {Object a = new String("xx");log(a);}
?//輸出 log -object
?
3.好吧,如果不強制指定類型為Object呢?
[java] view plaincopyprint?
public?static?void?main(String[]?args)?{??????log(new?String(“xx”));??}?? public static void main(String[] args) {log(new String("xx"));}
?//輸出? log -string
?
?
總結:在提供Object類型重載的時候,函數還是會根據繼承樹從下往上找對應的重載實現。
提供Object類型參數的好處也是明顯的,否則 log(Long l),log(Byte b)就全得實現一次了(當然固定類型也是推薦全部實現的,但是對于程序中自定義的類就不好辦了,無法提供默認操作)
看String的valueOf函數就重載了Object參數:
[java] view plaincopyprint?
public?static?String?valueOf(Object?obj)??{??????return?obj?!=?null???obj.toString()?:?“null”;??}?? public static String valueOf(Object obj){return obj != null ? obj.toString() : "null";} ?
?
總結
以上是生活随笔為你收集整理的java Object类型的参数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。