大佬告诉我java 反射如何获取成员变量的值

大佬告诉我java 反射如何获取成员变量的值,第1张

下例演示了通过反射获取 Test 类对象 t 的 iVal, strVal 成员变量的值:

import javalangreflectField;

class Test {

private int iVal;

private String strVal;

public Test(int iVal, String strVal) {

thisiVal = iVal;

thisstrVal = strVal;

}

}

public class App {

public static void main(String[] args) {

// 创建一个 Test 对象

Test t = new Test(123, "Hello");

// 获取对象 t 的 Class 

Class<> tt = tgetClass();

try {

// 获取 Test 类的 iVal 字段 Field

Field field = ttgetDeclaredField("iVal");

// 设置可访问

fieldsetAccessible(true);

// 获取 iVal 的值

int val = fieldgetInt(t);

Systemoutprintln(val);

Field strValField = ttgetDeclaredField("strVal");

strValFieldsetAccessible(true);

String strVal = (String)strValFieldget(t);

Systemoutprintln(strVal);

} catch (NoSuchFieldException | SecurityException e) {

eprintStackTrace();

} catch (IllegalArgumentException e) {

eprintStackTrace();

} catch (IllegalAccessException e) {

eprintStackTrace();

}

}

}

如果我没理解错的话,我觉得可以这样做。具体如下:

1你说的实体类应该指的是obj变量吧,根据你的方法签名,它应该是Object类(所有类的根类);

2根据C#语言的特点,使用该方法传进来的任何实体类(或者说变量)都可以代替obj变量;

3你所说的创建实体类实例,我觉得应该不是什么问题了,根据前面1和2的叙述,那么可以直接将参数obj进行new *** 作。然后需要用哪个方法,直接使用:实例方法的方式获取便可以了。

希望对你有帮助!

如何通过java反射将数据库表生成实体类

bean的各个fields,是数据库字段名,就直接将recordset的各个column给相应的field赋值——通过反射赋值 ~ ~

  internal class Employee

    {

        public string No { get; set; }

        public int Age { get; set; }

        public string Name { get; set; }

        public string Post { get; set; }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Employee emp = new Employee();

            empAge = 25;

            empPost = "人工智能工程师";

            empNo = "A001";

            empName = "hky_bd2010";

            // 反射获取指定类型变量所有属性

            SystemReflectionPropertyInfo[] pro = empGetType()GetProperties();

            foreach (SystemReflectionPropertyInfo item in pro)

            {

                ConsoleWriteLine(itemName+"="+itemGetValue(emp));

            }

            ConsoleReadKey(true);

        }

    }

先写一个从字符串生成任何类型的对象的函数 public object stringToObject(string str,Type objectType)//传递两个参数,一个是字符串含有每个属性的属性名和值对,属性和值用冒号分隔,属性与属性用逗号分隔,另一个参数是要创建的对象的类型 { string[] shuxing = strSplit(new char[] { ',' });//将字符串分解成 “属性:值”数组 for (int i = 0; i < shuxingLength; i++) { shuxing[i]= shuxing[i]Replace("\"", ""); }//去掉字符串的双引号 object obj = SystemActivatorCreateInstance(objectType); //使用反射动态创建对象 PropertyInfo[] pis =obj GetType()GetProperties(BindingFlagsPublic|BindingFlagsInstance);//获得对象的所有public属性 if (pis != null)//如果获得了属性 foreach (PropertyInfo pi in pis)//针对每一个属性进行循环 { for (int i = 0; i <shuxingLength; i++)//检查字符串中的所有“属性:值”列表 { if (shuxing[i]Split(new char[] { ':' })[0] == piName)//如果对象的属性名称恰好和字符串中的属性名相同 { Type proertyType= piPropertyType; //获得对象属性的类型 piSetValue(obj, ConvertChangeType(shuxing[i]Split(new char[] { ':' })[1],proertyType), null); //将字符串中的字符串类型的“值”转换为对象属性的类型,并赋值给对象属性 } } } return obj; }

以上就是关于大佬告诉我java 反射如何获取成员变量的值全部的内容,包括:大佬告诉我java 反射如何获取成员变量的值、如何获得参数中的实体类、如何通过java反射将数据库表生成实体类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存