当前位置: 首页 > news >正文

如何创建成员内部类数组

在 Java 中,成员内部类(非静态内部类)的实例必须与外部类的实例相关联。因此,创建成员内部类数组需要以下步骤:


1. 声明成员内部类数组

数组的类型需使用外部类名限定内部类,语法为:

外部类名.内部类名[] 数组名 = new 外部类名.内部类名[长度];

示例

public class Outer {class Inner { // 成员内部类void print() {System.out.println("内部类方法");}}public static void main(String[] args) {// 声明成员内部类数组Outer.Inner[] innerArray = new Outer.Inner[3];}
}

2. 初始化数组成员

必须通过外部类实例逐个初始化数组元素,语法为:

数组名[i] = 外部类实例.new 内部类构造器();

示例

public class Outer {class Inner { /* ... */ }public static void main(String[] args) {Outer outer = new Outer(); // 创建外部类实例Outer.Inner[] innerArray = new Outer.Inner[3];// 初始化每个元素for (int i = 0; i < innerArray.length; i++) {innerArray[i] = outer.new Inner(); // ✅ 正确关联外部类实例}// 使用数组中的内部类对象innerArray[0].print(); // 输出:"内部类方法"}
}

3. 常见错误与解决方案

(1) 未关联外部类实例
Outer.Inner[] innerArray = new Outer.Inner[3];
innerArray[0] = new Inner(); // ❌ 错误:缺少外部类实例

解决方案
必须通过外部类实例创建内部类对象:

innerArray[0] = outer.new Inner();
(2) 数组元素未初始化
Outer.Inner[] innerArray = new Outer.Inner[3];
innerArray[0].print(); // ❌ 错误:元素为null,导致NullPointerException

解决方案
遍历数组并初始化所有元素。


4. 完整代码示例

public class Outer {private int id;public Outer(int id) {this.id = id;}// 成员内部类class Inner {void display() {System.out.println("外部类ID: " + id);}}public static void main(String[] args) {Outer outer = new Outer(100);Outer.Inner[] innerArray = new Outer.Inner[3];// 初始化数组for (int i = 0; i < innerArray.length; i++) {innerArray[i] = outer.new Inner();}// 调用方法for (Inner inner : innerArray) {inner.display(); // 输出:外部类ID: 100}}
}

总结

步骤关键操作注意事项
声明数组Outer.Inner[] array = new Outer.Inner[n];类型必须为外部类名.内部类名
初始化元素array[i] = outer.new Inner();必须通过外部类实例创建内部类对象
使用元素调用内部类方法(如array[i].method()确保元素已初始化,避免NullPointerException

通过遵循上述步骤,即可正确创建和初始化成员内部类的数组。

http://www.dtcms.com/a/157724.html

相关文章:

  • 硬件工程师面试常见问题(8)
  • SQL语法基础,进阶,高级sql语句学习
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-网页图片显示问题
  • Hutool TreeUtil快速构建树形数据结构
  • 简易版2D我的世界C++程序(有点BUG,但是可以玩!!!)
  • 教育领域的AIGC革命:构建多模态智能教学系统
  • Java 安全:如何保护敏感数据?
  • pytorch python常用指令
  • GoLang基础
  • Java ThreadLocal与内存泄漏
  • SD模型的评估指标(挖坑中..)
  • 【强化学习(实践篇)】#1 多臂赌博机网格世界
  • 腾讯云智三道算法题
  • chrony服务器(1)
  • Python赋能教育:构建智能考试评分系统的最佳实践
  • 上位机知识篇---时钟分频
  • Android学习总结之自定义View绘制源码理解
  • springboot入门-controller层
  • 多系统安装经验,移动硬盘,ubuntu grub修改/etc/fstab 移动硬盘需要改成nfts格式才能放steam游戏
  • YOLOv8改进新路径:Damo-YOLO与Dyhead融合的创新检测策略
  • 第三方测试机构如何保障软件质量并节省企业成本?
  • Xilinx FPGA支持的FLASH型号汇总
  • git 工具
  • 架构进阶:105页PPT学习数字化转型企业架构设计手册【附全文阅读】
  • ARM架构的微控制器总线矩阵仲裁策略
  • 【Android】四大组件之Activity
  • Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?
  • 【补题】Codeforces Global Round 20 F1. Array Shuffling
  • Unity-Shader详解-其一
  • LabVIEW 工业产线开发要点说明