yu954663801 2016-05-27 02:05 采纳率: 60%
浏览 1178
已采纳

JAVA反射獲取屬性名報錯

反射获取属性名异常,遍历明明存在,指定属性名获取却报错,求指点。代码如下:
public class Test2 {
private String column1;
private List column2;

public String getColumn1() {
    return column1;
}
public void setColumn1(String column1) {
    this.column1 = column1;
}
public List<String> getColumn2() {
    return column2;
}
public void setColumn2(List<String> column2) {
    this.column2 = column2;
}

public static void main(String[] args) {
    try {
        Class<?> c=Test2.class;
        Field[] fields=c.getDeclaredFields();
        for(Field f:fields){
            System.out.println("遍历: "+f.getName());//遍历所有属性存在
        }
        Field f1=c.getField("column1");//直接获取报错
        System.out.println("直接获取: "+f1.getName());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

控制台输出:
遍历: column1
遍历: column2
java.lang.NoSuchFieldException: column1
at java.lang.Class.getField(Class.java:1520)
at test.Test2.main(Test2.java:30)

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-05-27 02:11
    关注

    http://blog.sina.com.cn/s/blog_3f69372d0100ar4t.html
    私有的需要调用 字段.setAccessible(true);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?