繁体   English   中英

这两个陈述之间的语义差异是什么?

[英]What's the semantical difference between the two statements?

我有两个(相当无用的) interfacestest1扩展test

interface test
{
    int a = 8;
    void show();
}

interface test1 extends test
{
    int a = 4;
    void show();
}

我有一个实现test1接口的类MyClass (再次有点无用)

public class MyClass implements test1
{
    public void show()
    {
       System.out.println(((test)this).a);    // 1
       System.out.println(test.a);            // 2
    }
    public static void main(String ar[])
    {
        new MyClass().show();
    }
}

在我提供的代码中,我有兴趣知道两个语句之间的语义差异 (如果有的话)分别为1.2 . 因为结果明智,如果我错了,请纠正我,他们几乎是一样的。

因此,接口变量默认为public static final ((test)this).atest.a之间没有区别 ((test)this)编译器期望参考类型的test 对于编译器来说无关紧要。 例如

System.out.println(((test)null).a);

上面的行也可以工作,并为您提供适当的输出。

没有区别。 但是通过实例引用引用静态成员并不是一个好习惯。

this转换为父级以访问其静态字段实际上是误导性的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM