javax.swing.text.html.ImageView;
第 111 行和 258-267 行
http://javasourcecode.org/html/open-source/jdk/jdk-6u23/javax/swing/text/html/ImageView.java.html
public class ImageView extends View {
....
private float vAlign;
....
}
我的程序:
.....
ImageView layeredPane = (ImageView) view;
Field privateStringField = layeredPane.getClass().getDeclaredField("vAlign");
privateStringField.setAccessible(true);
layeredPane.vAlign = 2.0;
.....
我得到:
Test.java:80: error: vAlign has private access in ImageView layeredPane.vAlign = 2.0;
如何修复它?我需要输入值 2.0
最佳答案
您可以通过不尝试获取私有(private)实现细节来修复它。基本上你不应该这样做。即使您仍在使用此版本的 ImageView
,您的代码最终也会变得脆弱,并且容易受到版本之间的更改的影响。将其设为私有(private)的全部目的是阻止您直接访问它。
您可能跌倒privateStringField.setFloat(layeredPane, 2.0f)
,但我强烈建议不要这样做。
(顺便说一句,当它是一个 float 字段时,将其称为 privateStringField
很奇怪......)
关于java - 访问 Java 的私有(private)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9447552/