java – 访问匿名或本地内部类中的匿名或本地内部类
发布时间:2020-12-15 02:29:53 所属栏目:Java 来源:网络整理
导读:好的,所以我知道如何访问包含内部类的外部类,无论是匿名还是内部类. 但我的问题是,如果它本身是一个内部类,如何访问外部类?一些代码可以帮助: public final class LocationPage extends BasePage { private static final String CRITERIA_FORM_ID = "Crite
好的,所以我知道如何访问包含内部类的外部类,无论是匿名还是内部类.
但我的问题是,如果它本身是一个内部类,如何访问外部类?一些代码可以帮助: public final class LocationPage extends BasePage { private static final String CRITERIA_FORM_ID = "CriteriaForm"; protected Panel onCreateBodyPanel() { return new ViewBodyPanel(BasePage.BODY_PANEL_ID) { public void invokeMe() { // How do I Invoke This Method? } private Form<CriteriaBean> helpCreateCriteriaForm() { return new Form<CriteriaBean>(LocationPage.CRITERIA_FORM_ID) { @Override protected void onSubmit() { LocationPage.this.ViewBodyPanel.invokeMe(); // Compile Error. } }; } }; } } 更新:对于那些想要看到我在这里尝试做什么的人,这里有一个完整的代码示例.这实际上是Apache Wicket,但我认为你可以得到这个想法.看一下名为onSubmit的方法.我添加了一个代码注释来帮助查明它. 更新二:使代码示例到位.对于那个很抱歉! 解决方法
您只需要指定ParentClass.this.something来消除歧义.如果您的表单没有方法invokeMe,您只需使用该名称而无需限定,编译器应该找到它:
private Form<CriteriaBean> helpCreateCriteriaForm() { return new Form<CriteriaBean>(LocationPage.CRITERIA_FORM_ID) { @Override protected void onSubmit() { invokeMe(); } }; } 如果函数确实存在于内部内部类中,那么Java中没有任何技巧可以实现.而是将ViewBodyPanel.invokeMe方法重命名或包装成明确的内容. public void vbpInvokeMe(){ invokeMe(); } private Form<CriteriaBean> helpCreateCriteriaForm() { return new Form<CriteriaBean>(LocationPage.CRITERIA_FORM_ID) { @Override protected void onSubmit() { vbpInvokeMe(); } }; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读