日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java Object类型的参数

發布時間:2023/12/29 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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类型的参数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。