java在怎么拿到另外一个类的私有变量
来源:互联网 发布:eclipse改端口号 编辑:程序博客网 时间:2024/05/17 02:00
**怎么通过在一个类中拿到另外一个类的私有变量和私有方法**
我们都知道由于java语言的封装性,会建议将一个bean类中的成员变量私有化,让在这个类外面是直接访问不到的,一般都会提供get,set方法进行访问,但是除了这种方法还可以通过反射进行访问
核心代码如下:
PrivateObject object = new PrivateObject("wangyanwei"); try { Field field = PrivateObject.class.getDeclaredField("name"); field.setAccessible(true);//这个是必须的,其作用是关闭关闭指定Field实例的反射访问检查 String name = (String) field.get(object); Log.e("YANWEI", name); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); }
要注意的是通过调用 Class.getField(String name)和 Class.getFields()只会返回公有的变量,无法获取私有变量 只能得到公有的属性和方法,并不能得到私有的方法。
同样的道理也可以得到另外一个类的私有方法,核心代码如下:
`
PrivateObject object = new PrivateObject("wangying");
try {
Method method = PrivateObject.class.getDeclaredMethod("getName", null);
method.setAccessible(true);
String returnName = (String) method.invoke(object, null);
Log.e("WANG", returnName);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
要说的是 Class.getMethod(String name, Class[] parameterTypes)和 Class.getMethods()方法,只会返回公有的方法,无法获取私有方法。
- java在怎么拿到另外一个类的私有变量
- 在Java中怎么访问类中用Private修饰的私有变量?
- 怎么拿到一个控件的标签类型
- java中怎么判断一个字符串在另外一个字符串中的方法
- 有关java私有变量访问的一个问题!!
- 类的私有变量
- 类的私有变量
- java利用反射来调用一个类的私有方法和成员变量
- Java学习笔记_反射_Class.forName()加载并修改一个类的私有成员变量
- 【已解决】一个makefile中export出来的变量在另外一个makefile中无法访问
- 一个makefile中export出来的变量在另外一个makefile中无法访问
- 在一个Activity中调用另外一个Activity的变量或方法
- 怎么在一个APP中调用另外一个APP
- Sencha touch 2 - 怎么在把list的数据动态传输到另外一个view
- 拿到一个DHUEMS的网站源码应该怎么看?C1
- 使用指针在类外修改类的私有变量
- 待补充:java类里的私有变量问题,在对象A里有一个对象B,调用对象B的方法获取变量,会有短暂的缓存
- SQL怎么查询一个时间包含在另外一个时间段内?
- UE4从零搭建CF游戏关卡(蓝图篇)
- PCL1.8.0在VS2013和Qt5.7.1上的配置安装小结
- 安装genymotion模拟器
- 4. Neural Network
- 7. Bagging & Random Forest
- java在怎么拿到另外一个类的私有变量
- 安卓开发 EditText 的多行显示设置
- WebService开发--手机号码归属地查询和天气预报查询
- 打造前端MAC工作站(九)配置XAMMP,打造apache+php+mysql本地服务器
- 建立busybox的ftpd服务
- 递归实现全排列问题
- 类的三大特性之继承
- [教程] 微软开源PowerShell突破封闭堡垒
- Android的布局管理器(上篇)-LinearLayout、TableLayout、FrameLayout、RelativeLayout