下例演示了通过反射获取 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反射将数据库表生成实体类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)