java如何判断属性类型

java如何判断属性类型,第1张

你是想通过传入一个类模板然后判断出某个属性类型?\x0d\利用反射可以做到\x0d\Field filed = classNamegetDeclaredField(parameter);\x0d\\x0d\className为对应类模版,parameter为你的属性名称\x0d\\x0d\filedgetType()toString(); 然后利用这个方法可以查询到对应属性类型\x0d\\x0d\基本类型直接返回比如 int 直接返回int ,如果是包装或者引用 则直接\x0d\返回对应包类名 比如 class javalangShort\x0d\\x0d\如果你要获取所有的 还是利用class对象 \x0d\Field[] fields =classNamegetDeclaredFields();\x0d\\x0d\循环遍历就可以了

把这个方法写在基类

public void getFields() {

        Class<> cls = getClass();

        for (; cls != Objectclass; cls = clsgetSuperclass()) {

            Field[] fs = clsgetDeclaredFields();

            for (Field f : fs) {

                Systemoutprintln(fgetName());

            }

        }

    }

Type t = tcGetType();//获得该类的Type

//再用TypeGetProperties获得PropertyInfo[],然后就可以用foreach 遍历了

foreach (PropertyInfo pi in tGetProperties

{

object value1 = piGetValue(tc, null));//用piGetValue获得值

string name = piName;//获得属性的名字,后面就可以根据名字判断来进行些自己想要的 *** 作

//获得属性的类型,进行判断然后进行以后的 *** 作,例如判断获得的属性是整数

if(value1GetType() == typeof(int))

给你写了个例子你看下哈。。

import javalangreflectField;

public class GetField {

public static void main(String[] args) {

try {

Class clazz = ClassforName("");//根据类名获得其对应的Class对象 写上你想要的类名就是了 注意是全名 如果有包的话要加上 比如javaLangString

Field[] fields = clazzgetDeclaredFields();//根据Class对象获得属性 私有的也可以获得

for(Field f : fields) {

Systemoutprintln(fgetType()getName());//打印每个属性的类型名字

}

} catch(Exception e) {

eprintStackTrace();

}

}

}

1、类Vector:类Vector是Java的历史集合类,隶属于javautil包。它包装了异构链表和数组杂合体,具有以下两个特点:向量是异构的,不要求每个元素的类型相同,向量中可以混合多种对象类型;向量是数组杂合体,因为它们可以在增加元素时动态增大。其异构性正好符合数据库记录中属性类型不一的特点,而其动态性也正好符合数据库查询时,结果集记录个数不定的特点。类Vector定义如下:publicclassVectorextendsAbstractListimplementsList,Cloneable,Serializable{…}实现了向量成员的查找、新增、删除等方法。如:add(Objectobj)可方便地加入一个对象;get(intindex)可方便地得到向量中的一个对象;remove(Objectobj)。则可方便地删除向量中一个对象。

·2、类JTable:JTable组件是Swing组件中比较复杂的小件,隶属于javaxswing包,它能以二维表的形式显示数据。类JTable定义如下:publicclassJTableextendsJComponentimplementsTableModelListener,Scrollable,TableColumnModelListener,ListSelectionListener,CellEditorListener,Accessible{…}类JTable在显示数据时具有以下特点:可定制性:可以定制数据的显示方式和编辑状态;异构性:可以显示不同类型的数据对象,甚至包括颜色、图标等复杂对象;简便性:可以以缺省方式轻松地建立起一个二维表。其可定制性可满足不同用户和场合的要求,异构性也正好符合数据库访问结果集中属性类型不一的特点。类JTable提供了极为丰富的二维表格 *** 作方法,如设置编辑状态、显示方式、选择行列等,在此不一一赘述。使用类JTable显示数据之前,必须根据情况生成定制模型、单元绘制器或单元编辑器。类AbstractListModel用来定制用户自己的数据模型,这个类在后面要介绍。TableCellRenderer接口用来定制单元绘制器,TableCellEditor接口用来定制单元编辑器,这两个接口主要用于颜色对象的处理上,在示例中没有用到,不做过多说明。·

每一个类被jvm加载到内存中后,都会生成一个class对象,而且每一个类的实例对象都会有一个引用指针指向该class对象。基于这个class对象我们可以做很多事情,同时它也是整个反射机制的基础。

这里,我只想说一下,如何才能获取到数组元素类型的class对象,这个和普通元素获取的方式还是有区别的,具体看看代码:

public class ClientTest {

public static void main(String args[]) throws Exception {

Tester test = new Tester();

Tester[] tests = new Tester[0];

Class<> c1 = testsgetClass()getComponentType();

Class<> c2 = Testerclass;

Class<> c3 = testgetClass();

Systemoutprintln(c1getName());

Systemoutprintln(c2getName());

Systemoutprintln(c3getName());

Tester[] newTesters = (Tester[])ArraynewInstance(c1, 10);

Tester newTester = (Tester) c1newInstance();

Systemoutprintln(newTesterslength);

}

}

class Tester {

private String name;

private String mem;

}

关键是testsgetClass()getComponentType()的使用,它的作用是“如果class对象是一个数组,则返回这个数组元素的class对象,否则返回null”。

以上就是关于java如何判断属性类型全部的内容,包括:java如何判断属性类型、java中如何获取类的属性、如何获取一个实例化后对象的所有属性和值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9296270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存