1. 程式人生 > >一個關於傳入引數為null的問題

一個關於傳入引數為null的問題

面試遇到的:程式碼如下:

public class Test {
    public static void main(String[] args){
        new Test().new A().get(null);

    }

    class A{
        public void get(Object o){
            System.out.println("objct:" + o);
        }

        public void get(Integer str){
            System.out.println("Integer:"
+ str); } } }

問執行結果是什麼?

答案:
Integer:null

延伸:假如把


public void get(Object o){
System.out.println("objct:" + o);
}
傳參改成Double型別,則結果又是什麼?

分析:
該題目涉及點較多,比如內部類的例項化,不作為重點;類A中有兩個方法名一樣的方法宣告,複習一下,假如同一類中有兩個或以上方法名一樣的方法宣告是如何區分的呢?(第一種:返回型別不一致;第二種:傳入引數不一致,本題為第二種)。
當null作為引數傳入時編譯器選擇哪一個方法呼叫呢?首先null表示不確定的物件,即不知道型別和值是什麼,一切未知。所以:
當把傳參型別改成Double,則main中無法確定到底呼叫哪一個方法(因為null表示不確定物件,so不知道它是Integer or Double嘍),編譯不通過;
當兩個方法中傳入的引數為繼承關係時(Interger extends Object)則將不確定物件null當作子型別

處理。到這裡才是重點。

相關推薦

一個關於傳入引數null的問題

面試遇到的:程式碼如下: public class Test { public static void main(String[] args){ new Test().new

問題描述: 在使用mybatis對資料庫執行更新操作時,parameterType某個具體的bean,而bean中傳入引數null時,丟擲異常如下:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mappin

php 實戰之array_merge函式特性-其中一個引數null

最近做專案時,需要合併兩個從資料庫中讀取的陣列,於是想到了用php中的array_merge函式,最後結果總是為null,通過dump,發現這是由於其中的一個數組是null造成的。演示如下: <?php $arr1 =null; $arr2 = array('tom'

hibernate 查詢Page 只要有一個字段null 查出來的整條數據都null

hibernate 查詢page 只要有一個字段為null 查出來的整條數據都為nullPageable pageable = this.getPageable(queryDto); Page<PrpdExch> page2 = prpdExchDao.findAll(pageable);通過po

使用axis呼叫webservice時,服務端接收到的引數null

通過axis呼叫,需要注意兩點: 1)在call.setOperationName是必須通過Qname來制定namespaceURI 2)在設定引數時,不使用服務端定義的引數名,而是arg0~argN來定義,也不需制定namespaceURI,上述程式碼 call.addParamete

MyBatis中foreach傳入引數Poji裝飾類,list、陣列的不同寫法

foreach 屬性介紹 foreach 用於迭代傳入過來的引數。 它的屬性介紹分別是 collection:表示傳入過來的引數的資料型別。該引數為必選。要做 foreach 的物件,作為入參時,List 物件預設用 list 代替作為鍵,陣列物件有 array 代替作為鍵,Map 物

mybatis動態SQL--傳入引數集合,陣列型別

  當介面方法的傳入型別為List 或陣列Array 時,我們該如何操作 /** * * 1.單個的引數Mybatis不會做特殊處理 * #{這裡隨便寫什麼都可以} 它都能把這裡面的值取到 * 2.傳入物件POJO(普通的

Mybatis:使用bean傳值,當傳入Null時,提示“無效的列型別”的解決辦法

提示: Try setting a different JdbcType forthis parameter or a differentjdbcTypeForNull configuration property. Cause: java.sql.SQLException: 無效的列型別: 1111

MyBatis中foreach傳入引數list、陣列、map的不同寫法

最近在做專案中遇到一個mybatis的問題,整了好久,怎麼改都報錯,最後發現竟然是寫法的問題。現將此坑總結如下。collection屬性是在使用foreach的時候最關鍵的也是最容易出錯的,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的,如果不區分,就容易出錯。主

Java過載函式,當引數null時,呼叫的處理

精確性原則 關於以下程式的輸出結果: public class TestNull { public void show(String a){ System.out.println("String"); } public void show(Object o)

mybatis中sql傳入引數集合、陣列時解決方式

平時我們寫sql時只需要傳入一個查詢引數或者幾個不同欄位的引數就足夠了,但是如果傳入的引數是集合、陣列的時候該怎麼辦呢? mybatis中的<foreach>標籤很好的提供了對這類問題的解

springMVC 對引數null引數null的處理

前臺傳給後臺的引數有時是不固定的,有些引數可能有,有些可能沒有,比如獲取定位的gps,有的使用者有開gps,就有gps引數,有些沒有,就沒有gps引數,因此,我想讓這些引數成為可選的,如果沒有傳入,則可

request.getParameter("name")獲取引數null和""空字串的區別

1.獲取到的值為" "空字串 當url裡有name屬性,但是沒有值的時候後臺用request.getParameter("name")獲取的是空字串"" 2.獲取到的值為null 當url裡沒有

mybatis傳入引數string型別時,if標籤判斷引數值的方法

我們在用mybatis框架時,當傳入的值為string型別時且需要判斷時,如果用和引數為map型別的值一樣的方法來寫<if test="引數名!=null and ''!=引數名“>這時查詢時會報錯:There is no getter for property

用soap做的webservice,引數null的問題

1.普通的引數服務端接收不到,為null解決辦法:@WebParam(name="strUserid",targetNamespace="http://certSynchronous.controller.monitorWeb.business.site.bjca.org.c

mybatis傳入引數map時如何在mapper.xml中獲取

有時在開發中難免會遇到傳入的引數為map型別的時候, map的key為資料庫中的主鍵或者其他的唯一欄位, value為需要進行插入的值,在mybaits的XML檔案中進行遍歷取出map引數中的值, 有兩種方式進行處理方法一:xml檔案中寫法<update id="upd

傳送DELETE或PUT請求時springmvc獲取引數NULL

1. 情況描述:使用 $.aiax({}); 傳送delete和put請求時,springmvc獲取到的請求引數一直為null。 2.後臺程式碼如下,可正常接受POST請求引數。 @RequestMapping(value="/Database/{id}",method=

判斷一個欄位null

在oracle中判斷一個欄位為空不能使用關係運算符: 例如:select  *  from  ename!=null; 或select   *    from   ename=null; 這樣是查不出結果的。 我們可以使用:is  null  和 is  not   nu

向前端返回資料時,自動忽略引數null的屬性

//該註解可以將實體類中的null的屬性自動忽略 @JsonInclude(JsonInclude.Include.NON_NULL)該註解可以對實現進行註解,註解後該類中出現null的屬性時,傳遞迴頁面的json中自動忽略在springboot這種也可以通過applicat

springboot從yml配置檔案中取引數null

相關檔案: application.yml檔案: ConfigProperties實體類: (注:這塊涉及到了一個關於lombok外掛的問題,還有一個spring關於@value註解的問題,還有一個為什麼不設定引數requestPath為private stat