反射怎么获取类属性类型
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/17 18:03:22
反射怎么获取类属性类型
有一个类:
class People
{
public int ID { get; set; }
public string Name { get; set; }
public bool Register { set; get; }
public float Gold { get; set; }
}
我怎么通过反射获取每一个属性的类型,是Int型的,还是string型的还是float型的,我主要想实力话这个类的时候,初始化这些值,string 为Empty,Int为0.
有一个类:
class People
{
public int ID { get; set; }
public string Name { get; set; }
public bool Register { set; get; }
public float Gold { get; set; }
}
我怎么通过反射获取每一个属性的类型,是Int型的,还是string型的还是float型的,我主要想实力话这个类的时候,初始化这些值,string 为Empty,Int为0.
![反射怎么获取类属性类型](/uploads/image/z/17872494-6-4.jpg?t=%E5%8F%8D%E5%B0%84%E6%80%8E%E4%B9%88%E8%8E%B7%E5%8F%96%E7%B1%BB%E5%B1%9E%E6%80%A7%E7%B1%BB%E5%9E%8B)
反射可以获取到属性类型,Field类里面有个方法,getType()就是获取属性类型的.
下面是个示例代码.
public static void main(String args[]) {
\x09\x09People peo = new People();
\x09\x09Class cla = People.class;
\x09\x09try {
\x09\x09\x09Field[] fields = cla.getFields();
\x09\x09\x09for(Field field:fields){
\x09\x09\x09\x09Class c = field.getType();
\x09\x09\x09\x09if(c==String.class){
\x09\x09\x09\x09\x09field.set(peo,"EMPTY");
\x09\x09\x09\x09}else if(c==Integer.class){
\x09\x09\x09\x09\x09field.set(peo,0);
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09} catch (SecurityException e) {
\x09\x09\x09// TODO Auto-generated catch block
\x09\x09\x09e.printStackTrace();
\x09\x09}catch (IllegalArgumentException e) {
\x09\x09\x09// TODO Auto-generated catch block
\x09\x09\x09e.printStackTrace();
\x09\x09} catch (IllegalAccessException e) {
\x09\x09\x09// TODO Auto-generated catch block
\x09\x09\x09e.printStackTrace();
\x09\x09}
\x09}
主要就是用Class c = field.getType();
这个来获取类型.
仍有问题可以Hi我.或者直接追问.
下面是个示例代码.
public static void main(String args[]) {
\x09\x09People peo = new People();
\x09\x09Class cla = People.class;
\x09\x09try {
\x09\x09\x09Field[] fields = cla.getFields();
\x09\x09\x09for(Field field:fields){
\x09\x09\x09\x09Class c = field.getType();
\x09\x09\x09\x09if(c==String.class){
\x09\x09\x09\x09\x09field.set(peo,"EMPTY");
\x09\x09\x09\x09}else if(c==Integer.class){
\x09\x09\x09\x09\x09field.set(peo,0);
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09} catch (SecurityException e) {
\x09\x09\x09// TODO Auto-generated catch block
\x09\x09\x09e.printStackTrace();
\x09\x09}catch (IllegalArgumentException e) {
\x09\x09\x09// TODO Auto-generated catch block
\x09\x09\x09e.printStackTrace();
\x09\x09} catch (IllegalAccessException e) {
\x09\x09\x09// TODO Auto-generated catch block
\x09\x09\x09e.printStackTrace();
\x09\x09}
\x09}
主要就是用Class c = field.getType();
这个来获取类型.
仍有问题可以Hi我.或者直接追问.