java中类名后的冒号用于什么
我有一个关于java代码中冒号的问题,在下一段代码中,java中类名后的冒号用于什么,java,colon,scope-resolution,Java,Colon,Scope Resolution,我有一个关于java代码中冒号的问题,在下一段代码中,OuterClass:showMsg(text)和行OuterClass:InnerClass:showMsg(text)不出错,让我觉得冒号字符的工作原理类似于C++中的双冒号(范围解析),但运行后的输出让我产生了一个问题,冒号是用来做什么的 public class OuterClass { public void showMsg(String msg) { System.out.format("OuterSho
OuterClass:showMsg(text)代码>和行OuterClass:InnerClass:showMsg(text)代码>不出错,让我觉得冒号字符的工作原理类似于C++中的双冒号(范围解析),但运行后的输出让我产生了一个问题,冒号是用来做什么的
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上测试,标识符后跟一个冒号只是一个字符。您没有任何带标签的break语句,因此它们是无用的,在语义上对您的程序没有任何意义
这3条带冒号的语句只相当于showMsg(text)
,因此每次都会显示InnerShow
。这个问题指的是那篇文章中的“跳出标签”