Java之.class和.getClass()的區別

lvxiangan發表於2018-11-14

class屬性
當你要獲得一個類的Class物件時(作函式引數的時候),你不能呼叫getClass方法,那你只能用類名.class來達到效果
例子:
System.out.println(JButton.class);  
輸出:
class javax.swing.JButton

getClass方法:該方法只能由類的例項變數呼叫
型別:public final Class<? extends Object> getClass()
功能:返回該物件的執行時類的java.lang.Class物件(API上的解釋)
例子:
JButton b1 = new JButton("button1");  
System.out.println(b1.getClass());  
輸出:
class javax.swing.JButton

 

 

package com.hqh.reflect;

public class GetClassTest {

public static void main(String[] args) {
   GetClassTest test = new GetClassTest();
   if(test.ClassCheck())
    System.out.println("OK");

}

public boolean ClassCheck() {
   try {
    System.out.println("通過類本身獲得物件");
    Class userClass = this.getClass() ;
    System.out.println(userClass.getName());
    System.out.println("===========");
   
    System.out.println("通過子類的例項獲得父類物件");
    UseInfo useInfo = new UseInfo();
    userClass = useInfo.getClass();
    System.out.println(userClass.getName());
    Class subUserClass = userClass.getSuperclass() ;
    System.out.println(subUserClass.getName());
    System.out.println("===========");
   
    System.out.println("通過類名.class獲取物件");
    Class forClass = com.hqh.reflect.UseInfo.class ;
    System.out.println(forClass.getName());
    System.out.println("===========");
   
    System.out.println("通過類名的字串獲取物件");
    Class forName = Class.forName("com.hqh.reflect.UseInfo") ;
    System.out.println(forName.getName());
    System.out.println("=============");
   
   } catch (Exception e) {
    e.printStackTrace();
    return false;
   }
   return true;
}
}


結果:

通過類本身獲得物件
com.hqh.reflect.GetClassTest
===========
通過子類的例項獲得父類物件
com.hqh.reflect.UseInfo
java.lang.Object
===========
通過類名.class獲取物件
com.hqh.reflect.UseInfo
===========
通過類名的字串獲取物件
com.hqh.reflect.UseInfo
=============


 

 

--------------------- 
作者:於小磊 
來源:CSDN 
原文:https://blog.csdn.net/Ghost_T/article/details/5811974 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

相關文章