黑马程序员技术交流社区
标题:
映射里访问权限的问题
[打印本页]
作者:
陆杨
时间:
2011-8-5 10:26
标题:
映射里访问权限的问题
成员变量的反射,视频上的代码我也基本上明白什么意思了:发现一个有趣的地方:
public class Main {
/**
* @param args
*/
public static void main(String[] args)throws Exception
{
ReflectPoint pt = new ReflectPoint();
changString(pt);
System.out.println(pt);
}
public static void changString (Object obj)throws Exception
{
Field[] fields = obj.getClass().getFields();
for (Field field :fields){
if (field.getType()==String.class){
String oldString = (String)field.get(obj);
String newString = oldString.replace('b', 'a');
field.set(obj, newString);
}
}
}
}这个是主类。
public class ReflectPoint
{
public String a = "ball";
public String b = "basketball";
public String c = "Six";
public ReflectPoint()
{
}
@Override
public String toString() {
return "ReflectPoint [a=" + a + ", b=" + b + ", c=" + c + "]";
}
}这个是第二个类。
这样运行时输出的就是 :ReflectPoint [a=aall, b=aasketaall, c=Six]
但是如果第二个类里面String前面的public 都拿掉那么
运行结果: ReflectPoint [a=ball, b=basketball, c=Six] 程序就不修改String了。
接着我百度了下访问权限 :
public 全部可见
protected 子类可见
default 包内可见
private 本类可见
如果成员变量前没有修饰的话应该是default包内可见。而我的两个类是属于同一个包
为什么访问不到?
作者:
匿名
时间:
2011-8-5 17:45
我想大概是因为那个getfields只能得到public修饰的字段吧,你可以用获得所有自段的方法测试下.另外成员字段一般是私有的,开发的时候别这样写哈,老方说,咱都是有经验的开发人员
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2