java - 有没有办法在主方法中创建方法局部内部类的对象?
问题描述
我想知道是否有任何方法可以在 Outerclass 对象的帮助下在 main() 方法中创建方法本地内部类对象。
public class Outerclass {
// instance method of the outer class
void my_Method() {
int num = 23;
// method-local inner class
class MethodInner_Demo {
public void print() {
System.out.println("This is method inner class "+num);
}
} // end of inner class
// Accessing the inner class
MethodInner_Demo inner = new MethodInner_Demo();
inner.print();
}
public static void main(String args[]) {
Outerclass outer = new Outerclass();
outer.my_Method();
}
}
Edit-1:我正在探索在 main 方法中实例化方法本地内部类的方法(我知道方法本地内部类对 main 方法不可见)但是,有什么解决方法吗?
public class Outerclass {
// instance method of the outer class
void my_Method() {
int num = 23;
// method-local inner class
class MethodInner_Demo {
public void print() {
System.out.println("This is method inner class "+num);
}
} // end of inner class
}
public static void main(String args[]) {
Outerclass outer = new Outerclass();
//inner-class object is created while calling my_Method()
// TBH IDK how to do this
outer.my_Method().new MethodInner_Demo();
}
}
解决方案
类MethodInner_Demo
是本地类,而不是内部类,因为它是在方法体中声明的。参见例如Java™ 教程。
本地类只能通过声明它的方法中的代码看到。
如果您希望能够从另一个方法创建类的实例,那么您需要将类移到方法之外,这样它就变成了一个实际的内部类。
然后,您可以创建一个实例,假设您已“授权”,由public
,protected
和private
访问修饰符定义。您可以通过new
使用外部类的实例限定运算符来做到这一点。
在您的情况下,我们还需要添加一个字段来携带 的值num
。
public class Outerclass {
// instance method of the outer class
void my_Method() {
int num = 23;
// Accessing the inner class
Inner_Demo inner = new Inner_Demo(num);
inner.print();
}
// inner class
class Inner_Demo {
private final int num;
Inner_Demo(int num) {
this.num = num;
}
public void print() {
System.out.println("This is inner class "+num);
}
} // end of inner class
public static void main(String args[]) {
Outerclass outer = new Outerclass();
outer.my_Method();
// Accessing the inner class
int num = 42;
Inner_Demo inner = outer.new Inner_Demo(num);
inner.print();
}
}
推荐阅读
- optaplanner - 初学者想使用 optaplanner 和 graphhopper 解决车辆路由问题
- networking - 以太网交换机究竟是如何工作的?
- python - 使用类合并两个列表(Python)
- python - 用python在html上提取
- php - 创建工厂类?
- javascript - 在 React.JS 属性定义中定义复杂的数据结构类型
- bash - 在 bash/shell 脚本中将所有 '/' 替换为 '\/'
- sql - 在 SQL Server 中结合 select 和 select union
- svn - 用于热拷贝的 Subversion (SVN) 日志命令
- pyspark - 从 PySpark UDF 更新全局字典中的值