java中的 private Logger log=Logger.getLogger(this.getClass());


this.getClass()得到什么? 

this 表示當前對象的引用; 

getClass() 是 java.lang.Object 中的方法,它返回一個對象的運行時類; 
this.getClass() 就是返回當前對象的運行時類。 

 

Logger.getLogger(this.getClass())又得到什么? 
他得到一個Logger對象,這個Logger將監視this.getClass()這個運行時類,這個運行時類里面你可能創建了log.info(""), log.debug(""),……等語句,那么這些語句就會根據你預先定義的Logger級別來輸出你的日志。就跟你寫System.out.print("")一樣,不同的是Logger可以根據需要按級別進行日志輸出控制。(當然這只是一方面) 

 

Logger.getLogger(this.getClass())這樣寫,有什么好處? 
這樣一來你只需要在基類中寫一行代碼就可以了,子類可以直接使用,這也是復用的原則。

 

  1. package com.zhaipuhong.j2se.keywords;  
  2.   
  3. public class ThisKeywordsA {  
  4.     protected String className = this.getClass().toString();  
  5.       
  6.     public ThisKeywordsA(){  
  7.         System.out.println("ThisKeywordsA className == " + className);  
  8.     }  
  9. }  
  10.   
  11. package com.zhaipuhong.j2se.keywords;  
  12.   
  13. public class ThisKeywordsB extends ThisKeywordsA{  
  14.       
  15.     public ThisKeywordsB(){  
  16.         System.out.println("ThisKeywordsB className == " + className);  
  17.     }  
  18.     /** 
  19.      * @param args 
  20.      */  
  21.     public static void main(String[] args) {  
  22.         // TODO Auto-generated method stub  
  23.         ThisKeywordsB b = new ThisKeywordsB();  
  24.     }  
  25.   
  26. }  


運行結果: 
ThisKeywordsA className == class com.zhaipuhong.j2se.keywords.ThisKeywordsB 
ThisKeywordsB className == class com.zhaipuhong.j2se.keywords.ThisKeywordsB 

由於B繼承A,A對象首先被創建(請不要考慮抽象類和接口^_^)然后作為B對象的字對象創建B 對象. 此時的Logger就是B對象的一部分,可以為B對象所用。 

this指的是子類的對象


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM