当前位置:  开发笔记 > 编程语言 > 正文

如何正确访问静态成员类?

如何解决《如何正确访问静态成员类?》经验,为你挑选了1个好方法。

我有两个类,并希望在另一个类中包含一个类的静态实例,并通过第一个类访问第二个类中的静态字段.

这样我可以使用相同名称的不同实例.

Class A 
{
    public static package1.Foo foo;
}

Class B 
{
    public static package2.Foo foo;
}


//package1
Foo 
{
    public final static int bar = 1;
}

// package2
Foo
{
    public final static int bar = 2;
}

// usage
assertEquals(A.foo.bar, 1);
assertEquals(B.foo.bar, 2);

这有效,但我得到一个警告"静态字段Foo.bar应该以静态方式访问".有人可以解释为什么会这样,并提供"正确"的实施.

我意识到我可以直接访问静态实例,但是如果你有一个很长的包层次结构,那就太丑了:

assertEquals(net.FooCorp.divisions.A.package.Foo.bar, 1);
assertEquals(net.FooCorp.divisions.B.package.Foo.bar, 2);

Jason Cohen.. 10

你应该使用:

Foo.bar

并不是:

A.foo.bar

这就是警告的意思.

原因是它bar不是实例的成员Foo.相反,bar在课堂上是全球性的Foo.编译器希望您全局引用它,而不是假装它是实例的成员.



1> Jason Cohen..:

你应该使用:

Foo.bar

并不是:

A.foo.bar

这就是警告的意思.

原因是它bar不是实例的成员Foo.相反,bar在课堂上是全球性的Foo.编译器希望您全局引用它,而不是假装它是实例的成员.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有