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-08Java類(lèi)加載器之ContextClassLoader詳解
這篇文章主要介紹了Java類(lèi)加載器之ContextClassLoader詳解,ContextClassLoader是一種與線程相關(guān)的類(lèi)加載器,類(lèi)似ThreadLocal,每個(gè)線程對(duì)應(yīng)一個(gè)上下文類(lèi)加載器,需要的朋友可以參考下2023-10-10MyBatisPlus中事務(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-07Java 高并發(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ā)用戶數(shù)等2021-10-10Java實(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