1. ホーム

このエラーの解決方法は、No enclosing instance of type class name is accessibleです。

2022-02-22 01:17:11

クラス名を囲むインスタンスでアロケーションを修飾する必要があります (例: x.new A(), x はクラス名のインスタンス)。

引用元:https://www.cnblogs.com/runnigwolf/p/5570810.html

事例紹介

パッケージのコレクションです。



インポート java.util.*;



/**



 *文字列を長さでソートします。 



 */



public class TreeSetTest { <未定義



public static void main(String[] args)



{ <未定義



TreeSet ts = new TreeSet(new StraComparator())。







<スパン ts.add("abhd") を実行します。



ts.add("hd") を実行します。



ts.add("aabhd") を実行します。



ts.add("bhd") を実行します。



<スパン ts.add("d")を実行します。







<スパン イテレータ it = ts.iterator();



while(it.hasNext())



{ <未定義



System.out.println(it.next())を実行します。



}



}



}



class StraComparator はコンパレータを実装しています。



{ <未定義



public int compare(Object o1,Object o2)



{ <未定義



String s1 = (String)o1;     



String s2 = (String)o2;



if(s1.length()>s2.length())です。



を返します。



if(s1.length()==s2.length()の場合)



は0を返します。



は-1 を返します。







<スパン }



}



方法1:内部クラスなしで2つのクラスに分割する方法

方法2:内側のクラスに、以下のようなstaticを追加する。 というのは、mainメソッドがstaticであるためです。

<スパン <スパン クラスの非静的メンバに静的メンバでアクセスすると間違うことがあるのは、クラスの非静的メンバが存在しないのに静的メンバが存在するからであり、メモリ上に存在しないものにアクセスすると当然間違うことになるのです。