上一篇:反射與單例設計模式 | 帶你學《Java語言高級特性》之八十四
【本節目標】
本節介紹了利用反射獲取類的基本信息(Package),一個類的基本信息主要包括類所在的包名稱、父類的定義、父接口的定義。
反射獲取類結構信息
在反射機制的處理過程之中,不僅僅只是實例化對象的處理操作,更多的情況下還有類的組成結構操作,任何一個類的基本組成結構都是父類(父接口)、包、屬性、方法(構造方法、普通方法)。
獲取類的基本信息
一個類的基本信息主要包括類所在的包名稱、父類的定義、父接口的定義。
範例:定義一個程序類
IMessageService:
interface IMessageService {
public void send();
}
IChannelService:
interface IChannelService {
public boolean connect();
}
AbstractBase:
public abstract class AbstractBase {
}
Person:
public class Person extends AbstractBase implements IChannelService,IMessageService {
@Override
public boolean connect() {
return true;
}
@Override
public void send() {
if (this.connect()) {
System.out.println("【信息發送】www.mldn.cn");
}
}
}
如果此時想獲得該類的一些基礎信息則可以通過Class類中的如下方法:
1、獲取包名稱:public Package getPackage()
2、獲取繼承父類:public Class<? super T> getSuperclass()
3、獲取實現父接口:public Class<?>[] getInterfaces()
範例:獲得包名稱
public class JavaAPIDemo {
public static void main(String[] args) {
Class<?> cls = Person.class;//獲取指定類的Class對象
Package pack = cls.getPackage();//獲取指定類的包定義
System.out.println(pack.getName());//獲取包名稱
}
}
範例:獲取父類信息
public class JavaAPIDemo {
public static void main(String[] args) {
Class<?> cls = Person.class;
Class<?> parent = cls.getSuperclass();//獲取指定類的Class對象
System.out.println(parent.getName());
System.out.println(parent.getSuperclass().getName());
// System.out.println(parent.getSuperclass().getSuperclass());
}
}
範例:獲得父接口
public class JavaAPIDemo {
public static void main(String[] args) {
Class<?> cls = Person.class; //獲取指定類的Class對象
Class<?> clazz[] = cls.getInterfaces();//獲取父接口的Class對象
for (Class<?> temp : clazz){
System.out.println(temp.getName());//獲取父接口的對象名稱
}
}
}
當獲取了一個類的Class對象後,就意味著這個對象可以獲取類中的一切繼承結構信息。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本內容視頻來源於阿里雲大學