java判斷class子類(lèi)或父類(lèi)的實(shí)例方法
我們首先看代碼:
Class c = ArrayList.class; c.isPrimitive(); //判斷c是否為基本數(shù)據(jù)類(lèi)型 c.isAssignableFrom(List.class); //判斷c是否是List類(lèi)的子類(lèi)或父類(lèi) c.getGenericType(); //得到泛型類(lèi)型
實(shí)例:通過(guò)反射得到List<T> 集合中的泛型類(lèi)型
package com.zf.target;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
class T{
List<A> a;
List<B> b;
// List l ;
Map<Integer, String> map ;
int c;
}
class A {}
class B{}
public class Test9{
public static void main(String[] args) {
Class tc = T.class;
Field[] fields = tc.getDeclaredFields();
for (Field f : fields) {
Class fc = f.getType();
if(fc.isPrimitive()){
System.out.println("基本數(shù)據(jù)類(lèi)型: " + f.getName() + " " + fc.getName());
}else{
if(fc.isAssignableFrom(List.class)){ //判斷是否為L(zhǎng)ist
System.out.println("List類(lèi)型:" + f.getName());
Type gt = f.getGenericType(); //得到泛型類(lèi)型
ParameterizedType pt = (ParameterizedType)gt;
Class lll = (Class)pt.getActualTypeArguments()[0];
System.out.println("\t\t" + lll.getName());
}
}
}
}
}
內(nèi)容擴(kuò)展:
java 如何判斷一個(gè)類(lèi)是否是另一個(gè)類(lèi)的子類(lèi)
Class clazzB = B.class;
Class clazzD = D.class;
boolean isFather = clazzD.isAssignableFrom(clazzB));
if(isFather){
System.out.println("D是B的父類(lèi)");
}else{
System.out.println("D不是B的父類(lèi)");
}
以上就是本次介紹的全部?jī)?nèi)容,感謝大家對(duì)腳本之家的支持。
- 關(guān)于Java繼承中父類(lèi)和子類(lèi)構(gòu)造函數(shù)的問(wèn)題
- Java子類(lèi)實(shí)例化總是默認(rèn)調(diào)用父類(lèi)的無(wú)參構(gòu)造操作
- java 父類(lèi)子類(lèi)有同名方法時(shí)如何調(diào)用的實(shí)現(xiàn)
- JAVA 多態(tài)操作----父類(lèi)與子類(lèi)轉(zhuǎn)換問(wèn)題實(shí)例分析
- Java中父類(lèi)和子類(lèi)之間的轉(zhuǎn)換操作示例
- java子類(lèi)調(diào)用父類(lèi)的方法中包含子類(lèi)重寫(xiě)的實(shí)例方法
- java創(chuàng)建子類(lèi)對(duì)象設(shè)置并調(diào)用父類(lèi)的變量操作
相關(guān)文章
java 配置MyEclipse Maven環(huán)境具體實(shí)現(xiàn)步驟
這篇文章主要介紹了 java 配置MyEclipse Maven環(huán)境具體實(shí)現(xiàn)步驟的相關(guān)資料,具有一定的參考價(jià)值,需要的朋友可以參考下2016-11-11
單例模式垃圾回收_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了單例模式垃圾回收的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Java類(lèi)加載器之ContextClassLoader詳解
這篇文章主要介紹了Java類(lèi)加載器之ContextClassLoader詳解,ContextClassLoader是一種與線(xiàn)程相關(guān)的類(lèi)加載器,類(lèi)似ThreadLocal,每個(gè)線(xiàn)程對(duì)應(yīng)一個(gè)上下文類(lèi)加載器,需要的朋友可以參考下2023-10-10
MyBatisPlus中事務(wù)處理的實(shí)現(xiàn)
本文主要介紹了MyBatisPlus中事務(wù)處理的實(shí)現(xiàn),包括事務(wù)的開(kāi)啟、提交、回滾等操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Java 高并發(fā)編程之最實(shí)用的任務(wù)執(zhí)行架構(gòu)設(shè)計(jì)建議收藏
高并發(fā)(High Concurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一,它通常是指,通過(guò)設(shè)計(jì)保證系統(tǒng)能夠同時(shí)并行處理很多請(qǐng)求,高并發(fā)相關(guān)常用的一些指標(biāo)有響應(yīng)時(shí)間(Response Time),吞吐量(Throughput),每秒查詢(xún)率QPS(Query Per Second),并發(fā)用戶(hù)數(shù)等2021-10-10
Java實(shí)現(xiàn)List反轉(zhuǎn)的方法總結(jié)
在Java中,反轉(zhuǎn)一個(gè)List意味著將其元素的順序顛倒,使得第一個(gè)元素變成最后一個(gè),最后一個(gè)元素變成第一個(gè),依此類(lèi)推,這一操作在處理數(shù)據(jù)集合時(shí)非常有用,所以本文給大家總結(jié)了Java實(shí)現(xiàn)List反轉(zhuǎn)的方法,需要的朋友可以參考下2024-04-04

