java.lang.IllegalAccessException: Class XX can not access a member of class XXX with modifiers "private static"
当前需求: 利用反射获取某一属性值
运行结果: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"的更多相关文章
- 异常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 ...
- java.lang.IllegalAccessException: void #####.MyBroadcastReceiver.() is not accessible from jav
java.lang.IllegalAccessException: void #####.MyBroadcastReceiver.<init>() is not accessible fr ...
- 7.java.lang.IllegalAccessException
java.lang.IllegalAccessException 没有访问权限 当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常.对程序中用了Package的情况下要注意这个 ...
- openfire 部署后报错: java.lang.IllegalArgumentException: interface xx is not visible from class loader
该异常是创建代理时加载接口的类加载器与创建时传入的不一致. 在本地eclipse做openfire二次开发,本地运行没错,部署到服务器上后报异常: java.lang.IllegalArgument ...
- Java反射操作成员变量 Class can not access a member with modifiers "*"
fields[j].set(obj, val); 报: Exception in thread "main" java.lang.IllegalAccessException: C ...
- 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 ...
- 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方法时,如果它的属性里面包含 ...
- 错误 java.lang.ClassCastException: com.xx cannot be cast to ResourceBundle
出现错误: java.lang.ClassCastException: com.xxx cannot be cast to ResourceBundle 百度搜索错误,没有结果.谷歌搜索:http:/ ...
- 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出现问题.
随机推荐
- linux学习 三 redhat
1: 查看redhat版本号. 2: 防火墙中加入8080 查看防火墙状态,root用户登录,执行命令systemctl status firewalld 开启防火墙:systemctl star ...
- JSONObject put List<Double> 后转化为String问题的解决办法
//原代码 JSONObject powerCurveJsonObj = new JSONObject(); powerCurveJsonObj.put("test",[0.5, ...
- POJ - 1321 棋盘问题 dfs分层搜索(n皇后变式)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 47960 Accepted: 23210 Descriptio ...
- C#简单的国际化
1.新建一个资源文件夹,并在资源文件夹新建中英问的资源文件,如图: 2.中英文资源文档添加资源,如图: 3.Program.cs中添加根据系统语言确定中英文,这里默认为英文: using Intern ...
- Maven 依赖范围(转)
1.什么是依赖范围? maven 项目不同的阶段引入到classpath中的依赖是不同的,例如,编译时,maven 会将与编译相关的依赖引入classpath中,测试时,maven会将测试相关的的依赖 ...
- dos生成目录树
1. tree命令详解 [Tree命令作用] 以图形显示驱动器或路径的文件夹结构. [Tree命令格式] 在命令行窗口使用tree /?查看帮助. TREE [drive:][path] [/F] [ ...
- ZOJ3359【阅读理解】
前言: 和队友一发入魂,很强势. 比赛中题目长的,就和队友一起读,这样比较快,然后还不会梦游,把点一句一句地搞出来. 思路: 在头5次,每次有人踢球就可能会输. 后面谁没进,对方进了救输. 代码: / ...
- 【OpenJ_Bailian - 3468】电池的寿命(贪心)
电池的寿命 Descriptions: 小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电.为了保证能够长时间玩游戏,他买了很多5号电池,这些电池的生产商不同,质量也有差异,因而使用寿命也有所不同 ...
- Mybatis思
站在巨人的肩膀上,感谢! mybatis源码分析之Mapper代理实现分析 2017年11月21日 23:39:04 huangshanchun 阅读数:277 版权声明:欢迎转载,如有不足之处 ...
- route(2018.10.24)
建出最短路图之后\(topsort\)即可. 具体思路: 先用\(dijkstra\)算法在原图中跑出\(1\)号点到\(i\)号节点的最短距离\(dist_1(i)\),将所有边反向后用\(dijk ...