java - 访问 Java 的私有(private)字段

标签 java imageview private-members

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/

相关文章:

android - 在自定义 View 中组合 android 组件

android - 背对背翻转包含两个图像的 Imageview

c++ - 访问器和修改器

java - 在Android中编译并执行任意Java字符串

java - Android,从sqlite检索数据并显示在自定义列表中的正确方法

java - Log4j - 修剪日志中的字段值

java - 出生报告 :How to Load report parameter set depending on selection of Another report parameter

ImageView 中的Android空白

java - 在 Java 的构造函数中声明和设置私有(private)最终成员变量的正确方法?

java - java中的函数作为私有(private)成员变量