(Object[])null

dbutils下QueryRunner.java 的一段代碼:java

package org.apache.commons.dbutils; 
public <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh) throws SQLException {
    return this.query(conn, false, sql, rsh, (Object[])null); 
}

 試題:sql

public class TestClass {
    public static void main(String[] args) {
        ((TestClass)null).testMethod();
    }
    private static void testMethod(){
        System.out.println("testMethod");
    }
}

運行正常,輸出testMethodapache

null能夠被強制類型轉換成任意類型的對象,經過這樣的方式能夠執行對象的靜態方法,但若是方法不是靜態方法的話,因爲null對象並無被實例化(分配空間),於是運行時會報空指針錯誤。this

總結:
1: null能夠轉化爲任何類型
2: private 只是權限聲明
2:static靜態關鍵字 僅僅意味着能夠不用實例化這個類
經過類名.方法名就能夠訪問
固然也能夠經過實例化類的對象後 經過對象.方法名
可是不能經過this關鍵字,由於this是指本實例中的方法,被static聲明的方法屬於類的方法指針

本站公眾號
   歡迎關注本站公眾號,獲取更多信息