你是想通过传入一个类模板然后判断出某个属性的类型?\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中如何获取类的属性、如何获取一个实例化后对象的所有属性和值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)