java - 从外部调用方法本地内部类的方法
问题描述
public class OuterMain {
public static void main(String[] args) {
Outer outer = new Outer();
outer.m2();
}
}
class Outer {
public void m1() {
class Inner {
void display() {
System.out.println("msg is displayed");
}
}
Inner inn = new Inner();
//cannot write code to call display() here
}
public void m2() {
//inner.display();
}
}
上面是代码块,其中有一个方法本地内部类。内部类中的 display 方法打印一条消息。主类创建一个 Outer 实例并调用 m2()。我被要求进行修改,在 java 中应用任何概念,但任务是从 m2() 调用内部类的 display() 方法。唯一的限制是该方法不能设为静态。
解决方案
您可以做的一件事是使用私有接口并Inner
实现它,从而能够m2()
返回一个对象,该对象的display()
方法可以在同一个外部类的其他地方调用
class Outer {
public Displayable m1() {
class Inner implements Displayable {
@Override
public void display() {
System.out.println("msg is displayed");
}
}
return new Inner();
}
private interface Displayable {
void display();
}
public void m2() {
m1().display();
}
}
推荐阅读
- javascript - 跨度换行
- python - 如何创建一个模型来存储与另一个模型相关的多个图像
- jenkins - 我们如何使用 hudson.util.HudsonFailedToLoad: org.jvnet.hudson.reactor.ReactorException: java.lang.NoSuchMethodError 重启 Jenkins 服务?
- xcode - 项目“Project-Name”已损坏,由于解析错误而无法打开
- amazon-web-services - python - gzip 字符串并上传到 s3
- vue.js - 如何在 macbook pro 上安装 vue-visjs?
- c# - 在dotnet core中,是否可以创建一个不引用标准目标框架的库项目?
- wordpress - 使用媒体(如图像)清理和验证 wordpress wp 编辑器数据的最佳方法是什么?
- apache-spark-sql - 在不指定单个列名的情况下进行连接时动态添加前缀到 spark 数据集列
- python - Python Wordsearch:如何打印找到的单词并将其他字母转换为感叹号?