现在我以经试出来了,区别在于结果的第三行。
试过名字,加冒号,换行啥的,最后是这句System.out.println(gradeField);
下面是代码:
package step3; import java.lang.reflect.Field; public class ReflectField { public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { Student student = new Student(); Class<? extends Student> studentClass = student.getClass(); // ---------------------Begin------------------------ // 使用字节码对象获取该类中定义公用属性。遍历输出该属性名。 Field[] Fields = studentClass.getDeclaredFields(); for (Field field : Fields) { System.out.println(field.getName()); } // 学会使用反射获取类中指定属性,并输出该属性的值,Student类中的 name属性 // 获取当前类和父类的某个公有属性 Field gradeField = studentClass.getDeclaredField("name"); System.out.println(gradeField); System.out.println(gradeField.get(student)); // 获取属性值 // System.out.println( ); // ---------------------End------------------------ } }
---------华丽的分割线------------下方是旧事----------------
1.使用字节码对象获取该类中定义公用属性。遍历输出该属性名。
2.学会使用反射获取类中指定属性,并输出该属性的值,Student类中的 name属性。
我觉得这个题已经出的没意思了,竟然让我去猜答案大概是个什么形式,而不是考我是否能够选择正确的方法解决问题。
我猜不出来到底是哪里错了,答案里的代码运行出错也就算了,解决了之后结果还是不匹配,是不是我的问题?
如果不是,那我就要说这个题:
恶心,做个屁。
如果是,还请各位大佬指教菜鸟我一二,感激不尽。
下面是我的答案,无法通过。
package step3;
import java.lang.reflect.Field;
public class ReflectField {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
Student student = new Student();
Class<? extends Student> studentClass = student.getClass();
// ---------------------Begin------------------------
// 使用字节码对象获取该类中定义公用属性。遍历输出该属性名。
Field[] publicFields = student.getClass().getDeclaredFields();
for (Field field : publicFields) {
System.out.println("declared field name : " + field.getName());
}
// 学会使用反射获取类中指定属性,并输出该属性的值,Student类中的 name属性
// 获取当前类和父类的某个公有属性
Field gradeField = student.getClass().getDeclaredField("name");
System.out.println(gradeField.getName());
// 获取属性值
System.out.println( gradeField.get(student));
// ---------------------End------------------------
}
}