一种解决方案很简单,您可以使主类字段成为可能,
public
但是这会使您的代码混乱,因此应尽可能将字段设置为私有。除了可以更好地完成IDE的代码完成之外,它还可以保护类免受非法的外部操纵。
现在对我来说,诀窍是内部类。
内部类可以访问其父级的私有字段,但是Java也不允许将内部类放入另一个文件中。
它必须在父类内部定义。
在这里,我开始进行挖掘并找到了可以被接受的解决方案。
如果这伤害了Java专家,我将不胜感激;)
诀窍是在自己的Java文件中创建“抽象类”。
我在惯例之外对其进行了命名,以使其脱颖而出:
InnerMainActivity_onClickHandlers.java
MainActivity是我的主类(新内部类的父类)
在我的Parentclass中,我定义了这个字段,一个普通的内部类,但 扩展 了新类:
private class inner extends InnerMainActivity_onClickHandlers{ public inner(MainActivity mainActivity) { super(mainActivity); }};在我的MainActivity.onCreate中:
Button.setonClickListener(new inner(this));
如您所见,如您所见,它将MainActivity(父类)传递给Inner类。
现在,内部类就这样:
public abstract class InnerMainActivity_onClickHandlers implements View.OnClickListener{ private final MainActivity main; public InnerMainActivity_onClickHandlers(MainActivity mainActivity) { this.main = mainActivity; } @Override public void onClick(View view) { // here implement the listener }}为了使此功能如广告所示,您需要将
privateMainActivity / Parent 的属性更改为
protected。
现在,扩展的内部类具有对父字段的访问权限,但是任何外部类仍无法访问它。
在这种情况下,我为所有onclick侦听器提供了一个专用的类,可以将第二个类用于其他用途。



