java 判断字段的类型的_Java – 获取类中特定数据类型的字段

原文链接作者:mkyong 译者:王乐(2270134103@qq.com)

一些Java反射API的例子。

1.显示所有字段和数据类型

使用反射遍历一个类声明的所有字段。

CompanyA.java

package com.mkyong.test;

import java.util.List;

import java.util.Map;

import java.util.Set;

public class CompanyA {

String orgName;

int count;

List comments;

Set branches;

Map extra;

//...

}

使用Java反射APIs getDeclaredFields()去遍历和打印字段名和数据类型。

Test.java

package com.mkyong.test;

import java.lang.reflect.Field;

import java.util.List;

public class Test {

public static void main(String[] args) {

Field[] fields = CompanyA.class.getDeclaredFields();

for(Field f : fields){

Class t = f.getType();

System.out.println("field name : " + f.getName() + " , type : " + t);

}

}

}

输出

field name : orgName , type :class java.lang.String

field name : count , type :int

field name : comments , type :interface java.util.List

field name : branches , type :interface java.util.Set

field name : extra , type :interface java.util.Map

2.获取指定数据类型的字段

下面的例子会获取所有List类型的字段。

Test.java

package com.mkyong.test;

import java.lang.reflect.Field;

import java.util.ArrayList;

import java.util.List;

public class TestAbc {

public static void main(String[] args) {

List list = getFieldNameWithListDataType();

for(String data : list){

System.out.println("List : " + data);

}

}

private static List getFieldNameWithListDataType(){

List result = new ArrayList<>();

//CompanyA, refer 1.1

Field[] fields = CompanyA.class.getDeclaredFields();

for(Field f : fields){

// use equals to compare the data type.

if(f.getType().equals(List.class)){

result.add(f.getName());

}

//for other data type

//Map

//if(f.getType().equals(Map.class))

//Set

//if(f.getType().equals(Set.class))

//primitive int

//if(f.getType().equals(int.class))

//if(f.getType().equals(Integer.TYPE))

//primitive long

//if(f.getType().equals(long.class))

//if(f.getType().equals(Long.TYPE))

}

return result;

}

}

输出

comments

Note

对于一些基本数据类型像int,你可以对比一下使用int.class或Integer.TYPE。

d0c1501a6d8bb921cf36400dc89de69f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值