为了账号安全,请及时绑定邮箱和手机立即绑定

java方面:private属性,没有set方法,只有get方法,如何给这个属性赋值?

java方面:private属性,没有set方法,只有get方法,如何给这个属性赋值?

回首忆惘然 2019-04-18 18:19:22
如题;public class Foo { private String readwrite;   // with getter and setter private String readonly;    // with getter public String getReadwrite() {     return readwrite; } public void setReadwrite(String readwrite) {     this.readwrite = readwrite; } public String getReadonly() {     return readonly; }}当我在其他类中调用Foo时,想给其readonly赋值,怎么办?
查看完整描述

8 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

用反射吧,然后设置setAccessible为true就可以了,如下:
public class Test {

private String readOnly;
public String getReadOnly() {
    return readOnly;
}
public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
    Test t = new Test();
    Field f = t.getClass().getDeclaredField("readOnly");
    f.setAccessible(true);
    f.set(t, "test");
    System.out.println(t.getReadOnly());
}

}


查看完整回答
反对 回复 2019-05-06
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

我觉得这应该是去面试时,人家提出的问题。写一个构成(constructor)的办法是对的。


查看完整回答
反对 回复 2019-05-06
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

你这么设计不觉得矛盾么,既然不给set方法,那就是只读的,在foo里就直接赋值。
你又要在别的类中去赋值,那干嘛不给set方法。

foo.readonly="";


查看完整回答
反对 回复 2019-05-06
?
冉冉说

TA贡献1877条经验 获得超1个赞

1.同意楼上的看法,最好是给readonly加一个set方法。如下
public void setReadonly(String readonly) {
this.readonly= readonly;
}
2.你可以写一个别的方法来设置readonly的值(呵呵,还不如给它加set方法)如下:
public void xxxx(String readonly){
this.readonly = readonly;
}

查看完整回答
反对 回复 2019-05-06
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

应该是面试时候问的吧用一个有参数的构造方法赋值就可以了不会连构造方法也不让用吧!
面试问这些稀奇古怪的题其实基本上就是想用你了就是想压你的工资你自己往下降个1000,700的基本上就没问题了

查看完整回答
反对 回复 2019-05-06
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

反射可以实现
关键是在获得的字段上setAccessible=true

查看完整回答
反对 回复 2019-05-06
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

在构造方法里赋值
//构造方法
public Foo(String readonly){
this.readonly = readonly; 
}

//调用
new Foo("readonly");


查看完整回答
反对 回复 2019-05-06
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

扩展包JODD可以,不对Foo进行任何修改


查看完整回答
反对 回复 2019-05-06
  • 8 回答
  • 0 关注
  • 2131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信