我有一个Java项目(简称为Project A),该项目由一个类及其子类组成。我将此项目打包到一个.jar文件中,该文件作为Maven依赖关系包含在另一个项目中(我们称其为Project B)。
我在Project A中的子类包含一个变量,如下所示:
int foo = null;
我想在Project B中执行以下操作:
Subclass.foo = 3;
但是,每当我尝试执行此操作时,Java都会不断向我抛出java.lang.ExceptionInInitializerError,它说这是由空指针错误引起的。
尽管我将此变量移至Project A中的基类的那一刻,它就起作用了。我能够在Project B中设置foo的值。
我不知道为什么这样做有效,了解Java的人愿意向我解释吗?
答案 0 :(得分:-1)
那是因为foo
上没有静态变量Subclass
。您只能将静态变量与此类名称一起使用。要使用非静态变量,您必须使用new
关键字实例化该类。
尝试以下操作之一:
第1类:
public static int foo = null;
第2类:
Subclass foo = 3;
第1类:
public int foo = null;
第2类:
Subclass subclass = new Subclass();
subclass.foo = 3;
此外,请注意,我添加了public
修饰符。默认情况下,该变量仅对同一软件包中的其他用户可用。鉴于您有两个不同的项目,我认为情况并非如此。
编辑:
有人(Lino)在评论中提醒我int不能为null
。将int
替换为Integer
,或将null
替换为0
。