Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中类名后的冒号用于什么_Java_Colon_Scope Resolution - Fatal编程技术网

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

我有一个关于java代码中冒号的问题,在下一段代码中,
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

这个问题指的是那篇文章中的“跳出标签”