Tag: nullpointerexception

如何检查数组元素是否为null以避免Java中的NullPointerException

我有一个部分nfilled对象数组,当我遍历它们时,我试图检查所选对象是否为null之前我用它做其他的东西。 但是,即使是通过NullPointerException检查它是否为null的行为。 array.length也将包括所有null元素。 你如何检查数组中的null元素? 例如,在下面的代码中将为我抛出一个NPE。 Object[][] someArray = new Object[5][]; for (int i=0; i<=someArray.length-1; i++) { if (someArray[i]!=null) { //do something } }

如何让@ParametersAreNonnullByDefault工作?

我已经多次尝试获取包注释@ParametersAreNonnullByDefault在maven项目中为我工作但没有成功。 有人可以共享一个链接到一个最小/样本maven项目,在这个项目设置(或发布pom.xml和package-info.java和演示类)? 我正在谈论让findbugs处理器为我强制执行它。

当参数字符串为null时,int compareTo()应该返回什么?

据说当input参数为null时,compareTo()应抛出NullPointerException。 但是,我正在实现一个需要将字段与String类型进行比较的类。 这些字段不必是强制性的。 我想知道在这种情况下, 1)当输入为空时我应该返回什么? 是否任何非空字符串按字典顺序大于或小于null? 和 2)如果这被认为是不好的做法,是否有任何支持性论点? 我应该强制用户使用空字符串吗? 如果使用空字符串,那不会混淆字段不适用的情况和字段为空的情况吗? 如果必须抛出exception,那么除了在手册中警告用户之外,还有什么可以/我应该做什么? 编辑:我可能不会在这里清楚地表达自己,但在我正在实现的程序中,可以为null的字符串是所有字段或类,不应该为null。 换句话说,comparisonTo()使用的对象不能为null,只有它们的私有字段可以。 所以在这种情况下,我相信如果我正确地实现了compareTo(),它就不会违反传递要求,因为具有空字段的类总是被认为是相同的。 我是对的还是我在解释这个错误? 谢谢大家的答案!

使用URLClassLoader重新加载jar时出现问题

我需要为应用程序的某些部分添加插件function到现有应用程序。 我希望能够在运行时添加一个jar,应用程序应该能够从jar加载一个类而无需重新启动应用程序。 到现在为止还挺好。 我使用URLClassLoader在线发现了一些样本,它运行正常。 我还希望能够在jar的更新版本可用时重新加载相同的类。 我再次找到了一些示例和实现这一点的关键,据我所知,我需要为每个新的加载使用一个新的类加载器实例。 我写了一些示例代码但是遇到了NullPointerException。 首先让我告诉你们代码: package test.misc; import java.io.File; import java.net.URL; import java.net.URLClassLoader; import plugin.misc.IPlugin; public class TestJarLoading { public static void main(String[] args) { IPlugin plugin = null; while(true) { try { File file = new File(“C:\\plugins\\test.jar”); String classToLoad = “jartest.TestPlugin”; URL jarUrl = new URL(“jar”, “”,”file:” + file.getAbsolutePath()+”!/”); URLClassLoader cl […]

getGraphics()上的空指针exception

我的应用程序看起来像那样,我在draw()方法得到一个空指针exception,确切地说是g.drawImage(img,0,0,null) package com.ochs.game; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; public class Game extends JPanel implements Runnable{ private static final long serialVersionUID = 8229934361462702491L; public static final int WIDTH = 320; public static final int HEIGHT = 240; public static final int SCALE = 2; public boolean isRunning; private BufferedImage […]

IntelliJ idea gui designer + maven

我有一个在GUI设计器的帮助下创建的项目。 这是主要forms的代码。 public class MainForm { MainForm() { directLineOkButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //some action } } }); crossLineOkButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //some action }); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //some action }); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //some action }); saveButton.addActionListener(new […]

找出以编程方式抛出NullPointerException的变量

我知道我可以使用这些技术找出Java中的变量是否为null: if (var==null) – >工作太多了 try { … } catch (NullPointerException e) { …} – >它告诉我什么行抛出exception 使用调试器 – >手动,太慢了 考虑以下代码行: if (this.superSL.items.get(name).getSource().compareTo(VIsualShoppingList.Source_EXTRA)==0) { 我想知道是否有一种通用的方法来以编程方式找出哪个变量(不仅仅是行)在某个代码区域中抛出NullPointerException。 在这个例子中,知道这一点

什么时候可以捕获NullPointerException?

有效的java建议我们不要catch NullPointerException 。 总是对的吗? 在很多捕获NullPointerException情况下,catch body只调用printStackTrace() 。 如果我没有捕获NullPointerException并调用printStackTrace() ,我如何检查发生exception的位置? 而且如果我捕获NullPointerException并且catch体是空的,那么我们当时无法得到任何堆栈信息,是吗? UPDATE 我分析了google android源码AOSP4.2.2_r1.2中捕获RuntimeException的统计信息。 有249个RuntimeException捕获,以下是catch-body的统计信息。 42%: throw it again as other Exceptions (RuntimeException: 33%, others: 8%) 32%: just return null or 0/false/true or other default values 14%: just call log or printstacktrace 5%: just comment like “// Fall through.”, “// ignore, not a valid type.”, “// […]

为什么三元运算给出了nullpointer,而ifelse对应的呢?

我在下面的一个实例中得到NullPointerException,而它的对应运行顺利。 public static void main(String[] args){ System.out.println(withTernary(null, null)); //Null Pointer System.out.println(withIfElse(null, null)); //No Exception } private static Boolean withTernary(String val, Boolean defVal){ return val == null ? defVal : “true”.equalsIgnoreCase(val); } private static Boolean withIfElse(String val, Boolean defVal){ if (val == null) return defVal; else return “true”.equalsIgnoreCase(val); } 在线版 在线版本中main反转 ,从withIfElse输出null ,然后在withTernary失败。 我正在使用以下java版本 java version […]

调试nullPointerException的好方法

我在java中使用eclipse和编程。 有时我遇到一个会让我困扰几个小时的nullPointerException。 无论如何,更好地调试nullPointerExceptions并找出哪些变量值和其他会导致空指针exception的事情。