Scraper
静的内部クラスと呼ばれるクラスと、とBuilder
呼ばれる非静的内部クラスStringPair
があります。ビルダーメソッドの1つを取得して、を構築してnew StringPair(a,b)
に追加しようとArrayList<StringPair>
していますが、コンパイラはコンパイルされません。問題の原因として、Error: non-static variable this cannot be referenced from a static context
と具体的に強調しています。new StringPair(a,b)
ここで何が悪いのかわかりません。助けていただければ幸いです。
class Scraper {
private final ArrayList<StringPair> stringPairs;
Scraper(Builder builder) {
stringPairs = builder.builderStringPairs;
}
public static class Builder {
private static ArrayList<StringPair> builderStringPairs = new ArrayList<StringPair>();
public Builder addStringPairs(String a, String b) {
builderStringPairs.add(new StringPair(a, b));
return this;
}
public Scraper build() {
return new Scraper(this);
}
}
class StringPair {
String a,b;
StringPair(String a, String b) {
this.a = a;
this.b = b;
}
String getA() {
return a;
}
String getB() {
return b;
}
}
}