既然私有变量都能随意赋值了,私有的意义何在? 岂不是Java的大漏洞?我觉得不太可能!
解决方案 »
- 将连续的数值连接在一起,用"-"连接连续数值的最小数和最大数,用逗号分隔序列
- tomcat问题,望解答……
- 懊恼的问题,单步执行与直接执行产生明显差别
- java 中for循环嵌套中两个并列的for循环执行次序问题
- jfreechart 画图
- 接口调用 与实现类 的 关系
- 从MySQL v4.1.*中取出的中文是"???" 转码也没有啊
- 为啥定义新的对象,有时候用new 有时候不用new
- sun one studio 5 sn
- 高清晰电影免费下载http://free.dlmovie.net/movie/freemovie.asp?userid=shenjr
- 大哥们,我的一个socket小程序,求救??
- jsdk安装后的问题,各位帮忙解
肯定就是不想让你访问,或者认为你没有必要去访问这些变量问楼主一个问题:你访问这些私有变量的目的和意义何在?如果真想访问,只有对class文件反编译,然后自己修改
{
private String a1;
private String a2;
public void setvalue1(String a)
{
this.a1=a;
}
public void setvalue2(String a)
{
this.a2=a;
}
}这样就OK拉
Schlemiel(维特根斯坦的扇子)的方法我曾经使用过,但是这样的方法难以保证对象状态的一致性.例如有一个类有一个私有成员,表明了一个人的年龄.自然这个成员的有效取值范围绝对不应该超过0-200,可是我可以随便设一个10000,这样的状态还有什么意义?
我曾经考虑过的方法有如下几项:方法 缺点
代码注射.直接修改对象相对应的字节码, 实现过于复杂,并且也
在代码中添加一个方法,通过这个方法 难以保证对象状态的一致性。
来对私有成员进行修改。Schlemiel的方法。相对来说,这是最 也难以保证对象状态的一致性。
容易的一种方法。扫描源代码,找出哪些方法修改了哪 需要有源代码,如果没有源代码
些数据成员,然后通过这些方法修改 ,则无能为力。而很多方法的参
数据成员。 数都有可能是标准库中的类或者
第三方的类。另外,直觉告诉我
这个方法还有一点点不对劲,
没有找出到底是什么。总之来说,这个问题涉及到面向对象语言的语义问题,很困难。能不能采取另外的方式?怎样才能不需要设置对象的状态呢?
或者自己实现native方法,实现对private方法,变量的访问。
private String name = null;
public void set_Name(String str){
name = str;
}public String get_Name(){
return name;
}