无法“导入静态"静态嵌套类? [英] Cannot `import static` static nested class?

查看:104
本文介绍了无法“导入静态"静态嵌套类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类A,其中有一个名为B的静态嵌套类:

I have a class A with a static nested class inside it called B:

import static A.B.*;

class A {
    static class B {
        static int x;
        static int y;
    }
    public static void main(String[] args) {
        System.out.println(x);
    }
}

我想静态导入B中的所有内容,但无法正常工作:

I want to static import everything in B, but it wont work:

$ javac A.java
A.java:1: package A does not exist
import static A.B.*;
               ^
A.java:9: cannot find symbol
symbol  : variable x
location: class A
        System.out.println(x);
                           ^
2 errors

为什么?

推荐答案

如果A在默认软件包中,则此方法将无效.但是,您可以添加一个包声明:

This won't work if A is in the default package. However, you could add a package declaration:

package mypackage;

并使用

import static mypackage.A.B.*;

来自 JLS :

SingleStaticImportDeclaration: 导入静态 TypeName .标识符;

SingleStaticImportDeclaration: import static TypeName . Identifier ;

其中 TypeName 必须为使用包成员中,static import语法为给出的包名称包括:

In Using Package Members the static import syntax is given with package name included:

import static mypackage.MyConstants.*;

建议很少使用static导入.

这篇关于无法“导入静态"静态嵌套类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆