JAVA在编写内部类时No enclosing instance of type XXX is accessible. Must qualify原因及解决
错误信息如下:
No enclosing instance of type Analysis_IDCard is accessible. Must qualify the allocation with an enclosing instance of type Analysis_IDCard (e.g. x.new A() where x is an instance of Analysis_IDCard).
导致的原因为:
package AnalysisNo; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Scanner; public class Analysis_IDCard { public class IdInformation{ public String idnumber; public String birthday; public String sex; public IdInformation(String idnumber,String birthday,String sex) { this.birthday=birthday; this.idnumber=idnumber; this.sex=sex; } public String getbirthday() { return birthday; } public String getidnumber() { return idnumber; } public String getsex() { return sex; } }
在main方法中实例化
IdInformation idinfo= new IdInformation(sIDCard,sdate,nSex); //这样是不行的
改成
IdInformation idinfo= new Analysis_IDCard().new IdInformation(sIDCard,sdate,nSex); //这样就可以了
网上查阅了资料之后发现是main方法之前是有一个static修饰的,需要在调用之前先实例化父类Analysis_IDCard,其实错误提示中已经很明显了 (e.g. x.new A() where x is an instance of Analysis_IDCard)
还有一种方法是给IdInformation内部类加上static修饰符即可。
public class Analysis_IDCard { public static class IdInformation{
IdInformation idinfo= new IdInformation(sIDCard,sdate,nSex); //上面加了static这样实例化就行了
本文来自博客园,作者:IT情深,转载请注明原文链接:https://www.cnblogs.com/wh445306/p/16751935.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?