java - 访问涉及嵌套私有方法的覆盖函数的公共变量
问题描述
如果涉及嵌套的私有方法,有什么方法可以访问被覆盖类的变量?
特别是,我想知道执行重命名函数后 String foo 在类 B 中的值(参见下面的示例)。我不打算更改 A 类代码的任何功能,这仅仅是关于以某种方式获取值。
我可以自由编辑 B 类,但如果真的没有其他方法可以实现这一点,那么更改 A 类对我来说只是一种选择。
public abstract class A {
protected void methodA() {
String foo = "bla";
foo = renameFunction(foo);
}
private String renameFunction(String incString)
{
return incString + "blub";
}
}
public class B extends A {
private String bar;
@Override
private void methodA() {
String foo = "bla";
foo = renameFunction(foo); //will not work as it's private
this.bar = foo;
}
}
解决方案
不。由于 foo 是方法内部的变量,它甚至不是 A 上的字段,因此它只存在于doSomthing
' 的执行范围内,不能从外部访问(不能从 B 或 A 访问)。
只有通过反射才能调用私有方法,除非您希望在单元测试或类似的东西中使用它,否则不建议这样做
推荐阅读
- android - 如何在 Kotlin 中隐藏 SearchView 的软键盘?
- android - Dagger2 - 将对象传递给模块的最佳实践?
- python - 从 python 调用 C# dll 文件
- r - 使用 'rvest' 和 SelectorGadget 对网页中的文本进行缩放
- sql - SQL LEFT JOIN 与部分字符串匹配
- javascript - express.js 中的请求正文,其中正文是数据库中的值
- c# - dotnet 核心中的多个 API 调用
- svelte - 'update_slot' 不是由 node_modules\svelte\internal\index.mjs 导出的 - Sapper、Swiperjs
- excel - 将 2 个范围相乘
- api - 任务“:app:processDebugResources”执行失败[flutter]