反射获取类中的指定字段

**

  • Class.getField(String)方法可以获取类中的指定字段(可见的),
  • 如果是私有的可以用getDeclaedField("name")方法获取,通过set(obj, "李四")方法可以设置指定对象上该字段的值,
  • 如果是私有的需要先调用setAccessible(true)设置访问权限,用获取的指定的字段调用get(obj)可以获取指定对象中该字段的值
  • @throws Exception
    */
    
    public static void main(String[] args) throws Exception {
        Class clazz = Class.forName("com.heima.bean.Person");
        Constructor c = clazz.getConstructor(String.class,int.class);   //获取有参构造
        Person p = (Person) c.newInstance("张三",23);                     //通过有参构造创建对象
    
        //Field f = clazz.getField("name");                             //获取姓名字段
        //f.set(p, "李四");                                               //修改姓名的值
        Field f = clazz.getDeclaredField("name");                       //暴力反射获取字段
        f.setAccessible(true);                                          //去除私有权限
        f.set(p, "李四"); 
    
        System.out.println(p);
    }

原文地址:http://blog.51cto.com/357712148/2158300

时间: 2024-10-06 19:36:11

反射获取类中的指定字段的相关文章

C#通过反射获取类中的方法和参数个数,反射调用方法带参数

using System; using System.Reflection; namespace ConsoleApp2 { class Program { static void Main(string[] args) { //反射获取 命名空间+类名 string className = "ConsoleApp2.ClassSample"; string methodName = "test1"; //传递参数 Object[] paras = new Obje

java反射获取类的所有成员变量(本类和基类)

我们知道在Java的反射机制中,最核心的一个类就是Class类. Class类中提供了两个常用的获取类的成员变量的方法. 方法1 getFields() /** * Returns an array containing {@code Field} objects reflecting all * the accessible public fields of the class or interface represented by * this {@code Class} object. *

C#判断一个类中有无"指定名称"的方法

C#中可以通过反射分析元数据来解决这个问题,示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 using System; using System.Reflection; namespace Hello {     class Program     {  

java 通过反射获取类属性结构,类方法,类父类及其泛型,类,接口和包

首先自定义三个类 package reflection1; public interface MtInterface { void info(); } package reflection1; import java.io.Serializable; public class Creature<T> implements Serializable { private char gender; public double weight; private void breath() { Syste

获取字符串中某一个字段的数据,GetValueFromStr

gps数据格式为:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A* /********************************************************************** *版权所有 (C)2015, Wuyq. * *文件名称: GetValueFromStr.c *内容摘要:用于演示从gps数据字符串中获取相应的内容 *其它说明:无 *当前版本: V1.0 *作

反射获取类的几种方法

1 public class Demo { 2 3 /** 4 * 反射:加载类,获得类的字节码 5 * @param args 6 * @throws ClassNotFoundException 7 */ 8 public static void main(String[] args) throws ClassNotFoundException { 9 10 //1 11 Class clazz = Class.forName("Person"); 12 13 //2 14 Cla

每天进步一点点之SQL 获取表中某个时间字段离当前时间最近的几条

实际中用到的SQL: select * from (select top 3 Id, case when startSignup>GETDATE() then '敬请期待' when (startSignup<GETDATE() and  endsignUp>=getdate()) then '正在报名'  when (StartDate<GETDATE() and EndDate>=GETDATE())or (StartDate<GETDATE() and EndDa

C#中通过反射获取类中非公有成员

public class NGlbGlobeXComm { public static T GetPrivateField<T>(object instance, string fieldname)            {                                BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;                Type type = instance.G

java 利用反射获取类对象中List的值

Field[] fields = Object.getClass().getDeclaredFields();//Object是已经被赋值的对象实例 for (Field field : fields) {if (!field.isAccessible()) { field.setAccessible(true); } if (List.class.isAssignableFrom(field.getType())) { Type t = field.getGenericType(); if (