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-----instanceof與getClass的區別Java
- 《轉》ParameterizedType getGenericSuperclass 獲取泛型引數;class getClass區別Zed泛型
- self::class和static::class的區別
- SCSS @mixin和class 區別CSS
- swift中Class和Struct的區別SwiftStruct
- Java之InetSocketAddress和SocketAddress的區別Java
- Java之for(;;)和while(true)的區別JavaWhile
- Class.forName和ClassLoader.loadClass的區別
- Java之try-catch和throws的區別Java
- java複習之HashMap和Hashtable的區別JavaHashMap
- C# 中 Struct 和 Class 的區別總結C#Struct
- C++基礎(八)struct和class的區別C++Struct
- java複習之 Vector、ArrayList和LinkedList 的區別Java
- 關於forName()、newInstance()、getMethod()、getClass()等區別的簡略說明
- 【Java】equals 和 == 的區別Java
- JAVA之編譯期和執行期區別Java編譯
- Class.isAssignableFrom與instanceof的區別
- TypeScript中,type、interface、class的區別TypeScript
- java 中equals和==的區別Java
- java yield()和sleep()的區別Java
- Python之“==”和“is”區別Python
- java反射之Class類Java反射
- 一文理解class.getClassLoader().getResourceAsStream(file)和class.getResourceAsStream(file)區別
- class和普通建構函式有什麼區別?函式
- Java中 equals() 方法和 == 的區別Java
- Java中Vector和ArrayList的區別Java
- PHP, Python和Java的區別分享PHPPythonJava
- object_getClass與objc_getClass的不同Object
- Java之String的equals與contentEquals區別Java
- @Bean和@Component之間的區別?Bean
- querySelector和getElementById之間的區別
- MySQL之Where和Having的區別MySql
- 敏捷和 Scrum 之間的區別敏捷Scrum
- Java基礎- ==和equals和hashCode的區別Java
- java中==和equlas區別Java
- java:Date和DateTime區別Java
- CSS中的class與id區別及用法CSS
- css中class和id選擇器有什麼區別?CSS