我不确定这里发生了什么。导致错误的行位于具有名为“string”的字段的 Printer 类型对象的实现内。整个内容都包含在名为“Printer”的抽象类中。如何在保持“字符串”字段私有的同时实现我想要的?
public abstract class Printer {
static Printer blahPrinter(){
Printer blahPrinter = new Printer("blah") {
@Override
void printString() {
System.out.println(this.string); //Here is the error: "string has private access in Printer"
}
};
System.out.println(blahPrinter.string); //No error on this line
return blahPrinter;
}
private final String string; //Compiles and works as expected if I use a more visible access modifier
public Printer(String string) {
this.string = "I say " + string;
}
abstract void printString();
public static void main(String[] args) {
final Printer blahPrinter = Printer.blahPrinter();
blahPrinter.printString();
}
}
撒科打诨
慕村225694
相关分类