Java之.class和.getClass()的區別
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
版權宣告:本文為博主原創文章,轉載請附上博文連結!
相關文章
- java反射(1) 之class.forName(""), 類名.class, 物件.getClass()區別Java反射物件
- java-----instanceof與getClass的區別Java
- self::class和static::class的區別
- 《轉》ParameterizedType getGenericSuperclass 獲取泛型引數;class getClass區別Zed泛型
- 【JAVA】Class.forName用法以及和new的區別Java
- scala class和object的區別Object
- SCSS @mixin和class 區別CSS
- swift中Class和Struct的區別SwiftStruct
- JS中class和id的區別JS
- 從一個例子學習 instanceof 和 getclass 的區別
- Java之for(;;)和while(true)的區別JavaWhile
- C++中 struct 和 class 的區別C++Struct
- C++中struct 和 class的區別C++Struct
- Java之try-catch和throws的區別Java
- java複習之HashMap和Hashtable的區別JavaHashMap
- java的getClass()函式Java函式
- C# 中 Struct 和 Class 的區別總結C#Struct
- C++基礎(八)struct和class的區別C++Struct
- 【Java】equals 和 == 的區別Java
- Java和Javascript的區別JavaScript
- java和html的區別JavaHTML
- Class.forName和ClassLoader.loadClass的區別
- java複習之 Vector、ArrayList和LinkedList 的區別Java
- JAVA常見面試題之Forward和Redirect的區別Java面試題Forward
- JAVA之編譯期和執行期區別Java編譯
- class與classloader的getResourceAsStream區別
- TypeScript中,type、interface、class的區別TypeScript
- OC 匯入類 #import和@class 區別複習Import
- java 中equals和==的區別Java
- java yield()和sleep()的區別Java
- ArrayList 和 Vector 的區別 -JAVAJava
- Java中equals和==的區別Java
- java堆和棧的區別Java
- JavaScript和Java的區別(轉)JavaScript
- Java之InetSocketAddress和SocketAddress的區別Java
- java中的==和equal的區別Java
- 關於forName()、newInstance()、getMethod()、getClass()等區別的簡略說明
- java反射之Class類Java反射