反射之操作类,方法,属性等

1.操作类

获取类,并通过反射获取一个实例对象

Class class1 = Student.class;

Student student = (Student)class1.newInstance();   //默认调用无参数的构造方法

student.setName("heh");

System.out.println(student.getName());

2.操作构造方法

  获取指定参数类型的构造方法,通过此对象创建一个特定参数值的实例对象

Class class1 = Student.class;

Constructor<?> constructor = class1.getConstructor(String.class,String.class,int.class);

Student student1=(Student)constructor.newInstance("123","456",12);

System.out.println(student1.getAge());

3.操作普通方法

Class class1 = Student.class;

Student student=(Student)class1.newInstance();

Method method=class1.getMethod("setAge", int.class);

method.invoke(student,10);

System.out.println(student.getAge());

4.操作属性

Class class1 = Student.class;

Student student = (Student) class1.newInstance();

Field fiel=class1.getDeclaredField("age");

fiel.setAccessible(true); //AccessibleTest类中的成员变量为private,故必须进行此操作

fiel.set(student, 10);

System.out.println(student.getAge());

5.修改数组的值

int[] a= {1,2,3,4,5,6,7,8,9};

Class class1 = a.getClass().getComponentType(); //返回表示数组组件类型的 Class。如果此类不表示数组类,则此方法返回 null

System.out.println("数组数据的名称:"+class1.getName());

System.out.println("数组的长度:"+Array.getLength(a));

System.out.println("数据的第一个元素的值:"+Array.get(a,0));

Array.set(a, 0, 12);

System.out.println("数据的第一个元素的值:"+Array.get(a,0));

时间: 2024-12-21 19:21:51

反射之操作类,方法,属性等的相关文章

通过反射把一个类的属性的值赋值给另一个类

两个类我就不创建了,具体实现方法如下: /// <summary> /// 通过反射把一个类的属性的值赋值给另一个类 /// </summary> /// <typeparam name="D"></typeparam> /// <typeparam name="S"></typeparam> /// <param name="s"></param>

PHP判断{函数/类/方法/属性}是否存在

1.php判断系统函数或自己写的函数是否存在 bool function_exists ( string $function_name ) 判断函数是否已经定义,例如: if(function_exists('curl_init')){ curl_init(); }else{ echo 'not function curl_init'; } 2.php判断类是否存在 bool class_exists ( string $class_name [, bool $autoload = true ]

反射之获取类,属性,方法,接口,父类等

获取类有三种方法 实体类和接口 public interface Person { public void sayHi(); } public class Student  implements Person{ private String id; private String name; private int age; public int sex=1; /*get和set方法省略*/ } Class c1 = Student.class; Class c2=Class.forName("c

反射获取 obj类 的属性 与对应值

MethodInfo[] infos = type.GetMethods(); List<string> attrList = new List<string>(); foreach (MethodInfo me in infos) { attrList.Add("" + me.IsPublic); attrList.Add("继承自" + me.DeclaringType + "方法名" + me.Name + &quo

通过反射,获取类的属性

http://stackoverflow.com/questions/3723934/using-propertyinfo-to-find-out-the-property-type https://www.codewars.com/kata/56c22c5ae8b139416c00175d/train/csharp using StriveObjects; using System.Reflection; using System; public class Strive { public s

python面向对象-2深入类的属性

在交互式环境中输入: 1 >>> class A: 2 a=0 3 def __init__(self): 4 self.a=10 5 self.b=100 6 7 8 >>> a=A() 9 >>> a.a 10 10 11 >>> a.b 12 100 13 >>> A.a 14 0 15 >>> A.b 16 Traceback (most recent call last): 17 File

C#反射技术的简单操作(读取和设置类的属性、属性值)

public class A { public int Property1 { get; set; } } static void Main(){ A aa = new A(); Type type = aa.GetType();//获取类型 System.Reflection.PropertyInfo propertyInfo = type.GetProperty("Property1"); propertyInfo.SetValue(aa, 5, null);//给对应属性赋值 i

C#反射技术的简单操作(读取和设置类的属性)

public class A { public int Property1 { get; set; } } static void Main(){ A aa = new A(); Type type = aa.GetType();//获取类型 System.Reflection.PropertyInfo propertyInfo = type.GetProperty("Property1"); propertyInfo.SetValue(aa, 5, null);//给对应属性赋值 i

反射机制获取并动态操作_方法_属性_构造器

获取属性等的相关代码示例: package ReflectProject; import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * 获取类的属性.方法.构造方法 * @author Administrator * */public class Test2 { public static void main(String[] args) thr