【发布时间】:2015-07-08 14:45:00
【问题描述】:
我最近开始使用 Java 编程,现在遇到以下问题:
我写了一个“ComparePattern”类,它得出最佳拟合的分数,然后应该返回分数和最佳拟合模式。目前成绩没有问题。归还模式似乎不起作用。它是一个双值数组,比如“bestpattern”。我已经实现了一个返回方法来返回所说的双数组。
public void double[] getBestPattern(){return bestpattern;}
现在,在运行比较之后,如果我从我的主类(比如 MainClass)调用返回方法,它会返回一个为空的数组。
double[] test = ComparePattern.getBestPattern();
做类似的事情
double[] test=ComparePattern.bestpattern;
也给出 null 。但是,如果我在生成它的 ComparePattern 类的 counstructor 中打印 bestpattern ,它显然不是 null 而是保持预期值。现在是有趣的部分。如果我在 ComparePattern 的构造函数中给出以下指令(当然是在生成最佳模式之后),它会起作用并返回正确的值:
MainClass.test=bestpattern;
显然这不是我想要的方式。我已经以静态和非静态方式尝试过,我确信所有变量都已正确初始化。有人知道为什么 java 将 bestpattern 从正常工作的双数组更改为 null 吗?
【问题讨论】:
-
您能否提供一个 SSCCE(简短、自包含、正确的示例)来说明问题?
-
请提供您的构造函数,最好提供您的类代码。我会冒险猜测您的
bestpattern字段仅适用于您的构造函数,而不适用于类本身。你在哪里定义bestpattern? -
你忘记了
this(比如this.bestpattern = bestpattern)吗? -
将 getBestPattern() 方法设为静态方法。
标签: java arrays nullpointerexception null