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这样实例化就行了

 

posted @ 2022-10-04 00:15  IT情深  阅读(188)  评论(0编辑  收藏  举报