我不允许改变A类,但我需要获得'a'的值(在构造函数中设置)。谁能告诉我怎么做?其他所有解决方案似乎都在A级提出一个吸气剂。我不允许以任何方式对A类进行更改,不允许更改为公共等。魔术必须在B类中发生。
public class A{
private int a;
public A(int x){
a = x * 10;
}
}
public class B{
public B(int x){
A instA = new A(x);
}
public int geta(){
???
}
}
PS:发表这个问题,因为每个类似的问题都是通过改变A类来回答的,而我不允许这样做。但由于似乎只有反思,这个问题可以被关闭。谢谢你们和男孩们。
答案 0 :(得分:2)
这是私人字段的重点;它们不在封闭类的范围之外。
您有以下选择:
答案 1 :(得分:0)
最好的决定是获得一个吸气剂。在编写最佳实践时,这是最安全,最干净的解决方案。
使用反射可以实现您想要的效果 - 您可以按名称查找字段(如果名称在类的未来版本中发生更改,该怎么办?)并提取它的值如下:
A a = new A(5);
Field field = A.getField("a");
field.setAccessible(true);
int value = field.get(a);
但请记住,这被认为是超级hacky,它强烈建议反对。
答案 2 :(得分:0)
以下是如何做到这一点
<VirtualHost *:443>
ServerName somedomain.com
ServerAlias www.somedomain.com
<Directory /mnt/myapp/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
<Directory /mnt/myapp/current/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
# Django Application
Alias /static /mnt/myapp/current/static
<Directory /mnt/myapp/current/static>
Options FollowSymLinks
Require all granted
</Directory>
<Directory /mnt/myapp/current/myproject/apache>
<Files wsgi.py>
Options FollowSymLinks
Require all granted
</Files>
</Directory>
WSGIDaemonProcess grapevine python-path=/mnt/myapp/current:/mnt/env/lib/python3.4/site-packages
WSGIProcessGroup myproject
WSGIScriptAlias / /mnt/myapp/current/myproject/apache/wsgi.py
SSLEngine on
SSLCertificateFile /home/myapp/myapp.com.crt
SSLCertificateKeyFile /home/myapp/myapp.com.key
SSLCertificateChainFile /home/myapp/myapp.crt
</VirtualHost>