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出现问题.
随机推荐
- 机器学习之SVM支持向量机
前言 以下内容是个人学习之后的感悟,转载请注明出处~ 简介 支持向量机(support vector machine),简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义 ...
- Android开发--AndroidManifest.xml文件解析
参考文章:http://www.cnblogs.com/pilang/archive/2011/04/20/2022932.html 一.关于AndroidManifest.xml AndroidMa ...
- 小白使用Web Deploy在vs2015中发布到iis遇到的问题及操作流程
整体流程详细参照:http://www.cnblogs.com/potential/p/3751426.html 问题1.未能连接到远程计算机,请确保在远程计算机上安装了 Web Deploy 并启动 ...
- C#中的yield return
4.1 迭代器块 一个迭代器块(iterator block)是一个能够产生有序的值序列的块.迭代器块和普通语句块的区别就是其中出现的一个或多个yield语句. yield return语句产生迭代的 ...
- Bloomberg Desktop Api 关于历史Tick数据的一些参考
使用WAPI命令可以看到当前BBG的Api情况. 目前2016年3月是V3的版本.其中有一个API Develper's Guide 中有Core Develper Guide的pdf, 里面提到了B ...
- 2016 Noip提高组
2557. [NOIP2016]天天爱跑步 ★★☆ 输入文件:runninga.in 输出文件:runninga.out 简单对比时间限制:2 s 内存限制:512 MB [题目描述] ...
- web项目数据存入mysql数据库中文乱码问题
刚开始怀疑是项目中编码设置问题,发现在web.xml中已经有过设置:后来dubug显示数据在传输的过程中一切正常,怀疑是数据库编码问题,然后查看mysql编码: show variables like ...
- SQL COUNT DISTINCT 函数
定义和用法 可以一同使用 DISTINCT 和 COUNT 关键词,来计算非重复结果的数目. 语法 SELECT COUNT(DISTINCT column(s)) FROM table 例子 注意: ...
- self.navigationController.navigationBar.translucent = YES航栏的属性默认 YES是透明效果并且主view不会偏移 NO是导航栏不透明 主view会向下偏移64px
交友:微信号 dwjluck2013 从iOS7开始,苹果对navigationBar进行了模糊处理,并把self.navigationController.navigationBar.translu ...
- windows下写的shell脚本到linux上不能运行
win上是dos模式,需要改成unix模式 方法是: 在linux上vim 打开脚本,然后:set ff=unix