【问题标题】:Java setting variables in subclassesJava 在子类中设置变量
【发布时间】:2019-01-22 11:26:25
【问题描述】:

我有一个 Java 项目(我们称之为项目 A),它由一个类及其子类组成。我将这个项目打包成一个 .jar 文件,我将它作为 Maven 依赖项包含在另一个项目中(我们称之为项目 B)。

我在项目 A 中的子类包含一个变量:

int foo = null;

我想在项目 B 中执行以下操作:

Subclass.foo = 3;

但是,每当我尝试执行此操作时,Java 都会不断向我抛出 java.lang.ExceptionInInitializerError,它说这是由空指针错误引起的。

不过,当我将此变量移至项目 A 中的基类时,它就起作用了。我能够在项目 B 中设置 foo 的值。

我不知道为什么会这样,知道Java的人愿意向我解释一下吗?

【问题讨论】:

标签: java maven class


【解决方案1】:

这是因为Subclass 上没有静态变量foo。您只能使用具有这样的类名的静态变量。要使用非静态变量,您必须使用 new 关键字来实例化类。

尝试以下方法之一:

选项#1:

第 1 类:

public static int foo = null;

第 2 类:

Subclass foo = 3;

选项 #2:

第 1 类:

public int foo = null;

第 2 类:

Subclass subclass = new Subclass();
subclass.foo = 3;

另外,请注意我添加了public 修饰符。默认情况下,该变量仅对同一包中的其他人可用。鉴于您有两个不同的项目,我认为情况并非如此。


编辑:

有人 (Lino) 在 cmets 中提醒我 int 不能是 null。将int 替换为Integer,或将null 替换为0

【讨论】:

  • int 不能是null,OP 可能是指Integer
  • 啊,是的,忽略了那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
相关资源
最近更新 更多