当前需求: 利用反射获取某一属性值
运行结果:java.lang.IllegalAccessException: Class com.example.demo.test.Reflect can not access a member of
class com.example.demo.test.EvalNum with modifiers "private static"...
反射用到的Bean类:
 package com.example.demo.test;

 import java.io.Serializable;

 /**
* @description: 反射用到的类
* @author: The Queen Of Rabbit
* @date: 2018/11/26
*/
public class EvalNum implements Serializable { private static String value; public EvalNum() {
super();
} public static String getValue() {
return value;
} public static void setValue(String value) {
EvalNum.value = value;
} }

当前代码:
 package com.example.demo.test;

 import java.lang.reflect.Field;
import java.lang.reflect.Method; /**
* @description: Reflect Demo
* @author: The Queen Of Rabbit
* @date: 2018/11/26
*/
public class Reflect { public static void main(String[] args) {
try {
// 通过反射获取类信息
String path = "com.example.demo.test.EvalNum";
Class<?> reflectClass = Class.forName(path); // 通过反射调用普通方法
EvalNum evalNum = (EvalNum) reflectClass.newInstance();
Method proMethod = reflectClass.getDeclaredMethod("setValue", String.class);
// 把对象evalNum的pro设置为属性(仅用于static修饰的属性)
proMethod.invoke(evalNum, "属性"); // 获取pro值
Field field = reflectClass.getDeclaredField("value"); String value = (String) field.get(reflectClass.newInstance());
System.out.println("获取value值:\n\t\t" + value);
} catch (Exception e) {
e.printStackTrace();
}
}
}
修改后代码:
 package com.example.demo.test;

 import java.lang.reflect.Field;
import java.lang.reflect.Method; /**
* @description: Reflect Demo
* @author: The Queen Of Rabbit
* @date: 2018/11/26
*/
public class Reflect { public static void main(String[] args) {
try {
// 通过反射获取类信息
String path = "com.example.demo.test.EvalNum";
Class<?> reflectClass = Class.forName(path); // 通过反射调用普通方法
EvalNum evalNum = (EvalNum) reflectClass.newInstance();
Method proMethod = reflectClass.getDeclaredMethod("setValue", String.class);
// 把对象evalNum的pro设置为属性(仅用于static修饰的属性)
proMethod.invoke(evalNum, "属性"); // 获取pro值
Field field = reflectClass.getDeclaredField("value");
// 仅在获取用private修饰属性使用
field.setAccessible(true);
String value = (String) field.get(reflectClass.newInstance());
System.out.println("获取value值:\n\t\t" + value);
} catch (Exception e) {
e.printStackTrace();
}
}
}

错误原因:
    无法访问私有化的构造方法,普通方法,和私有属性。

解决方案:
1. 将修饰类属性的 private 改为 public
2. 调用setAccessible()方法,来设置或取消访问检查,以达到访问私有对象的目的【如修改后代码28行】

java.lang.IllegalAccessException: Class XX can not access a member of class XXX with modifiers "private static"的更多相关文章

  1. 异常HTTP Status 500 - Illegal access to constructor, is it public? java.lang.IllegalAccessException: Class com.opensymphony.xwork2.ObjectFactory can not access a member of class action.CoreAction with

    Exception report message Illegal access to constructor, is it public? description The server encount ...

  2. java.lang.IllegalAccessException: void #####.MyBroadcastReceiver.() is not accessible from jav

    java.lang.IllegalAccessException: void #####.MyBroadcastReceiver.<init>() is not accessible fr ...

  3. 7.java.lang.IllegalAccessException

    java.lang.IllegalAccessException 没有访问权限 当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常.对程序中用了Package的情况下要注意这个 ...

  4. openfire 部署后报错: java.lang.IllegalArgumentException: interface xx is not visible from class loader

    该异常是创建代理时加载接口的类加载器与创建时传入的不一致. 在本地eclipse做openfire二次开发,本地运行没错,部署到服务器上后报异常:  java.lang.IllegalArgument ...

  5. Java反射操作成员变量 Class can not access a member with modifiers "*"

    fields[j].set(obj, val); 报: Exception in thread "main" java.lang.IllegalAccessException: C ...

  6. hibernate 解决 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.xxx 这类的问题

    <!-- 解决 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.intern ...

  7. json解析出现:java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to XXX

    感谢大佬:https://blog.csdn.net/one_ink/article/details/99817676 一.出错原因 当我们利用json解析中的toBean方法时,如果它的属性里面包含 ...

  8. 错误 java.lang.ClassCastException: com.xx cannot be cast to ResourceBundle

    出现错误: java.lang.ClassCastException: com.xxx cannot be cast to ResourceBundle 百度搜索错误,没有结果.谷歌搜索:http:/ ...

  9. Caused by: org.apache.jasper.JasperException: javax.el.ELException: java.lang.IllegalAccessException: Class javax.el.BeanELResolver can not access a m

    在tomcat版本下的7.0.35没有问题. 在tomcat版本下的7.0.12出现问题.

随机推荐

  1. 从使用os.system)在python命令(重定向标准输入输出

    从使用os.system)在python命令(重定向标准输入输出 python 标准输出stdout stdio os.system通常我可以通过改变sys.stdout的值在python更改标准输出 ...

  2. 微软silverlight Analytics FrameWork

    本文转自:http://kevinfan.blog.51cto.com/1037293/334622/ http://kevinfan.blog.51cto.com/1037293/334622   ...

  3. 【转】Maven 入门

    [转]http://www.blogjava.net/jiangshachina/archive/2006/09/01/67080.html   Maven入门--概念与实例  最近由于工作原因在研究 ...

  4. Linux环境下Nginx及负载均衡

    Nginx 简介 Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器,同时也提供了 IMAP/POP3/SMTP 服务.前向代理作为客户端的代理,服务端只知道代理的 IP 地址而不知道客 ...

  5. git commit 提交不了 error: pathspec 'project'' did not match any file(s) known to git.

    1. 问题--使用git将代码提交到码云,使用到以下命令时: git commit -m 'init project' # 报错 error: pathspec 'project'' did not ...

  6. Codeforces Round #383 【总结】

    总结一下这场... 搞起大号就崩了... A题没啥问题..通过电脑到手机上提交没啥大问题: B题,讲个最严重的问题,也是最近以来最严重的问题,虽然我说你开了个数组,虽然这个数组是不是最终的答案数组,但 ...

  7. hoj2188 WordStack

    WordStack My Tags   (Edit)   Source : Mid-Atlantic 2005   Time limit : 5 sec   Memory limit : 32 M S ...

  8. 茅台【思维/数学/剪枝】By cellur925

    题目传送门 给你\(n\)根木棍,问有多少种方法,使得选出的三根木棍能组成三角形. 开始想要用搜索的,但是写着写着卡壳了(?),于是改用贪心,开始对拍,觉得很稳,只是最后两个数据可能有点卡.很第一题难 ...

  9. JVM图解

    站在巨人的肩膀上 https://www.jianshu.com/p/314272e6d35b 1. Minor GC (1) Minor GC过程 假设现在Heap内存大小为20M,其中年轻代为10 ...

  10. bzoj1101:[POI2007]ZAP-Queries

    [POI2007]ZAP-Queries 题意简述:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d. Solution 很显然这是一个莫比 ...