博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java访问类中的私有成员(private member)
阅读量:4097 次
发布时间:2019-05-25

本文共 1182 字,大约阅读时间需要 3 分钟。

一般而言,一个类只允许访问另一个类中的public

然而当我们非要访问私有成员的时候,这时候Java的反射机制就用得上了。

package com.comac.reflect;public class A {      private String testStr="just for test";      private void get(int index, String value){          System.out.println(index+":"+value+" and testStr:"+testStr);      }  }

类B要访问类A中的私有成员。

import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class B{		public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {		Field field = Class.forName("com.comac.reflect.A").getDeclaredField("testStr");		field.setAccessible(true);		A a = new A();		System.out.println(field.getType().toString());		System.out.println(field.getName());		System.out.println(field.getModifiers());				Object s = field.get(a);		System.out.println(s);		String x = "hello";		field.set(a, x);		System.out.println(field.get(a));				Method method = Class.forName("com.comac.reflect.A").getDeclaredMethod("get", new Class[]{int.class, String.class});		method.setAccessible(true);		method.invoke(a, 3, "apple");			}}

转载地址:http://dgqii.baihongyu.com/

你可能感兴趣的文章
C#中ColorDialog需点两次确定才会退出的问题
查看>>
16、Memento 备忘录模式
查看>>
Java基础篇(一)
查看>>
数据库
查看>>
mysql update与group by
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
python猜拳游戏
查看>>
python实现100以内自然数之和,偶数之和
查看>>
python数字逆序输出及多个print输出在同一行
查看>>
python九九乘法表(详解)
查看>>
python实现嵌套循环打印小星星
查看>>
dataframe删除重复列
查看>>
pandas数据预处理之标准化数据
查看>>
pandas重建索引不删除值
查看>>
透视表指定行列索引结果如何?
查看>>
knn算法之数字识别
查看>>
matplotlib同一坐标四个柱状图绘制
查看>>
散点图、折线图、柱状图、饼图绘制(城乡人口)
查看>>
同步与异步、阻塞与非阻塞
查看>>