前言:
此刻我们对“java基本属性”大致比较关怀,各位老铁们都想要分析一些“java基本属性”的相关文章。那么小编也在网络上汇集了一些有关“java基本属性””的相关文章,希望各位老铁们能喜欢,兄弟们快快来了解一下吧!注意:想通过反射创建对象、获取类的属性,类的方法等,都必须要先获取到这个类的字节码文件,字节码文件是反射的前提;类的所有信息都会封装在Class字节码文件中;
Field作用:在反射中,类的属性会被封装到Field对象当中,Field对象包含属性的访问修饰符、属性的类型、属性的名字、属性的值等等;
private String name;以上一行代码会被封装到一个Field对象中;以下是Field类的简化结构class Field extends AccessibleObject implements Member { private String name;//属性的名字 private Class type;//属性的类型 private int modifiers;//属性的修饰符 }
Field类的重要方法总结:
int getModifiers() 返回的 Field对象表示的场java语言修饰符为整数。 String getName() 返回的 Field对象表示的字段的名称。类<?> getType() 返回一个 类对象标识声明类型的 Field对象表示的场。void set(Object obj, Object value) 设置域为代表的这 Field对象指定对象上的参数指定的新价值。Object get(Object obj) 返回的 Field表示字段的值,指定对象上。
1、使用反射创建一个学生类,name=张三,age=22,address=南京
package com.zd.ref;import java.lang.reflect.Field;public class Ref02 { public static void main(String[] args) throws Exception { //先获取Student类的字节码文件 Class stuClass = Class.forName("com.zd.bean.Student"); //通过反射创建对象 Object obj = stuClass.newInstance(); //获取name属性 Field nameField = stuClass.getDeclaredField("name"); nameField.setAccessible(true); //设置name属性的值 nameField.set(obj, "张三"); Field ageField = stuClass.getDeclaredField("age"); ageField.setAccessible(true); ageField.set(obj, 22); Field addressField = stuClass.getDeclaredField("address"); addressField.setAccessible(true); addressField.set(obj, "南京"); System.out.println(obj); }}
以上代码执行结果:
2、使用反射反编译String类,打印出String类的所有属性;
package com.zd.ref;import java.lang.reflect.Field;import java.lang.reflect.Modifier;public class Ref02 { public static void main(String[] args) throws Exception { //先获取Student类的字节码文件 Class strClass = Class.forName("java.lang.String"); StringBuffer s = new StringBuffer(); s.append( Modifier.toString(strClass.getModifiers()) + " class "+ strClass.getSimpleName() +" {\n"); Field[] fields = strClass.getDeclaredFields(); for (Field field : fields) { s.append("\t"); s.append(Modifier.toString(field.getModifiers())); s.append(" "); s.append(field.getType().getSimpleName()); s.append(" "); s.append(field.getName()); s.append(";\n"); } s.append("}"); System.out.println(s); }}
最终打印结果:
标签: #java基本属性 #java反射获取所有属性值