//これはコレクションの仕組みを調べるための小さなコードですが、main メソッドで Mountain オブジェクトを作成するとエラーが発生します。最後にさらに説明します。
import java. util. * ;
public class sortMountains {
class Mountain {
String name;
int height;
Mountain(String n, int h) {
name = n;
height = h;
}
public String toString( ) {
return name + + height;
}
}
List<Mountain> mtn = new ArrayList<Mountain> ();
class NameCompare implements Comparator <Mountain> {
public int compare(Mountain one, Mountain two) {
return one.name. compareTo(two. name);
}
}
class HeightCompare implements Comparator <Mountain> {
public int compare(Mountain one, Mountain two) {
return (two. height - one. height) ;
}
}
public void go() {
mtn.add(new Mountain("Longs ", 14255));
mtn.add(new Mountain("Elbert ", 14433));
mtn.add(new Mountain("Maroon " , 14156));
mtn.add(new Mountain("Castle ", 14265));
System.out.println("as entered:\n" + mtn);
NameCompare nc = new NameCompare();
Collections.sort(mtn, nc);
System.out.println("by name:\n'" + mtn);
HeightCompare hc = new HeightCompare();
Collections.sort(mtn, hc);
System.out.println("by height:\n " + mtn);
}
public static void main(String args[]){
sortMountains sorting=new sortMountains();
sorting.go();
//error line Mountain a=new Mountain("Everest",12121);
}
}
エラー行なしでコンパイルされた場合、上記は正常に動作しますが、メイン メソッドで Mountain のオブジェクトを作成したい場合、「静的メソッドから非静的を参照できません」というエラーが発生します。