java - 可以在不与封闭类的实例关联的情况下使用非静态成员类型吗?
问题描述
可以在不与封闭类的实例关联的情况下使用非静态成员类型吗?
例如
class Outer {
class Inner {
}
}
public class Demo {
public static void main(String args[]) {
Outer o = new Outer();
Outer.Inner inner = o.new Inner();
}
}
在Outer.Inner inner = o.new Inner()
中,是否Outer.Inner
使用Inner
与封闭类的实例没有关联?
是否有其他示例可以在不与封闭类的实例关联的情况下使用非静态成员类型?
谢谢
解决方案
是否
Outer.Inner
使用Inner
不关联到封闭类的实例?
从某种意义上说,是的,因为Outer.Inner
指的是一个类型。而且你永远不需要实例来使用types。
我认为您错误地认为这Outer.Inner
不应该起作用,因为有无数种不同的Inner
称为Outer
. 您可能认为如果我有两个不同的Outer
,o1
和实例o2
,它们将创建不同的Inner
类型。
但这完全不正确。你完全可以这样做:
Outer o1 = new Outer();
Outer o2 = new Outer();
Outer.Inner inner1 = o1.new Inner();
Outer.Inner inner2 = o2.new Inner();
inner2 = inner1;
所以Outer.Inner
只是一种类型。碰巧这种类型的实例需要一个实例Outer
才能创建。
推荐阅读
- jira - 向 JIRA 的 API 请求添加自定义字段
- r - R中的Dagitty调整集
- python - 将 django 从 2.4 升级到 3.0 时出现不兼容问题
- javascript - 如果条件:(64 > 360) 为真?
- c++ - 是否有使用 Ceedling 框架的 g++ 编译器的“project.yml”示例?
- c# - Newtonsoft.Json - 需要帮助展平对象
- javascript - 页面重新渲染/更改后如何维护组件状态?
- javascript - 如何在js中调用对象时使用变量而不是静态
- npm - Github 操作脚本必须先安装 npm 才能安装软件包,而其他脚本不需要
- architecture - 开发 REST API 时何时使用垂直切片或清洁架构?