我在java代码中有一个关于冒号的问题,在下一段代码中,行OuterClass:showMsg(text);
和行OuterClass:InnerClass:showMsg(text);
没有给出任何错误,让我觉得冒号字符有点像双冒号一样在C ++(Scope Resolution)中,运行后的输出给我留下了问题,冒号是什么?
public class OuterClass {
public void showMsg(String msg) {
System.out.format("OuterShow : %s%n", msg);
}
public static abstract class InnerClass {
public abstract void command();
public void showMsg(String msg) {
System.out.format("InnerShow : %s%n", msg);
}
}
public void someAction(){
new InnerClass() {
@Override
public void command() {
String text = "some text here";
this.showMsg(text);
OuterClass.this.showMsg(text);
InnerClass:showMsg(text);
OuterClass:showMsg(text);
OuterClass:InnerClass:showMsg(text);
}
}.command();
}
public static void main(String[] args) {
new OuterClass().someAction();
}
}
输出:
--- exec-maven ---
InnerShow : some text here
OuterShow : some text here
InnerShow : some text here
InnerShow : some text here
InnerShow : some text here
使用jdk1.8.0_25和maven-3.2.3
在Windows 7上进行了测试答案 0 :(得分:4)
后跟单个冒号的标识符只是label。你没有任何标记的break语句,所以它们没用,并且对你的程序没有任何语义意义。
带冒号的3个语句仅相当于showMsg(text)
,因此每次都显示InnerShow
。