一個關於傳入引數為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
延伸:假如把
傳參改成Double型別,則結果又是什麼?
public void get(Object o){
System.out.println("objct:" + o);
}
分析:
該題目涉及點較多,比如內部類的例項化,不作為重點;類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