草庐IT

set_null

全部标签

java - 具有 null Long 的三元表达式中的 NullPointerException

为什么下面这行代码会产生一个NullPointerException?Longv=1==2?Long.MAX_VALUE:(Long)null;我知道正在对null执行拆箱操作,但为什么呢?注意Longv=(Long)null;不产生异常。 最佳答案 所以看起来很明显,如果条件为真,你只需要装箱,如果条件为假,则不应该装箱。但是,三元运算符表达式必须具有特定的static类型。所以我们有Long和long。JLS声明结果将是原语(同样-假设运算符是+甚至是==)。所以三元运算符将强制拆箱,然后赋值才会导致装箱。如果您要用等效的if-

java - obj == null 与 null == obj

我一直习惯于检查null之类的if(null==obj)当我编译我的代码并在反编译后查看.class文件时,我可以看到我的代码已更改为if(obj==null)我知道在java中null==obj和obj==null无关紧要。但我很好奇为什么编译器会更改它? 最佳答案 编译器没有改变任何东西。它忠实地将if(null==obj)和if(obj==null)编译成不同的字节码,反编译器将其转换回相同的Java代码。与右边的null比较,即if(o==null){...}使用ifnonnull指令翻译成这个字节码:0:aload_01:

java - 为什么 Throwable.getMessage() 偶尔会返回 null?

我有一个有时会抛出异常的方法:this.items[index]=element;我有一个单元测试断言应该抛出的异常实际上被抛出了:try{doSomethingWithIndex(-1);Assert.fail("shouldcauseexception");}catch(IndexOutOfBoundsExceptionexpected){Assert.assertNotNull(expected.getMessage());}此测试作为持续构建的一部分运行,有时会失败,因为getMessage()实际上返回null。为什么会这样?我的代码永远不会抛出空消息异常。编辑我的原始代码示

java - 在 AspectJ set-pointcut 中公开先前的值

我必须检测字段值的变化。我想将以前的值与新值进行比较。我不知道字段名称或其类型。(更多背景here。)对于给定类的示例:packageeu.zacheusz.aspectjtries;@eu.zacheusz.aspectjtries.MyAnnotationpublicclassSample{privateStringfield;publicvoidmodify(){this.field="new";}publicstaticvoidmain(String[]a){newSample().modify();}}我有这个方面:packageeu.zacheusz.aspectjtrie

java - JAXB Marshaller 没有值为 null 的元素

当我使用JAXB编码器编码java对象时,编码器不会为java对象中的空文件创建空元素。例如,我有以下java对象:publicclassPersonTraining{@XmlElement(name="Val1",required=true)protectedBigDecimalval1;@XmlElement(name="Val2",required=true,nillable=true)protectedBigDecimalval2;@XmlElement(name="Val3",required=true,nillable=true)@XmlSchemaType(name="d

java - 为什么 Mockito 的 mock 在应该返回 null 时返回 0?

当有一些对象带有盒装类型属性时,该属性的getter返回0。但这应该返回null,因为装箱类型属性的默认值为null。这里有什么问题?classPerson{privateLongid;publicLonggetId(){returnid;}}...@MockPersonperson;...person.getId();//0insteadofnull 最佳答案 这只是在默认Mockito答案中为基本类型和包装类型选择的默认值。 关于java-为什么Mockito的mock在应该返回nu

java - 公共(public)日志配置 : use SimpleLog & set debug level

我有一个公共(public)日志配置问题。我希望它使用SimpleLog(而不是java.util.logging)并记录级别>=debug(而不是信息)的所有消息。 最佳答案 根据commons-loggingdocs,您应该能够通过将commons-logging.properties文件放置在类路径的根目录中,使用以下条目显式配置它以使用SimpleLog:org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog然后您可以configure

java - null 是否具有 Object 类型?

为什么会输出:“insideStringargumentmethod”?不是空的“对象”类型吗?classA{voidprintVal(Stringobj){System.out.println("insideStringargumentmethod");}voidprintVal(Objectobj){System.out.println("insideObjectargumentmethod");}publicstaticvoidmain(String[]args){Aa=newA();a.printVal(null);}} 最佳答案

java - request.getSession(false) 在调用 session.invalidate() 后不返回 null

使session无效不应该导致request.getSession(false)返回null吗?在我的注销servlet中,我调用了session.invalidate();在我的登录状态过滤器中调用request.getSession(false);对getSession(false)的调用从不返回null,但与返回的session对象关联的所有属性都是null。我目前通过搜索空属性来检测用户是否已注销,但这似乎不对。 最佳答案 Icurrentlydetectifauserisloggedoutbysearchingfornul

java - 在 Java 中返回 null 时如何评估下一条语句?

如何在Java中执行类似以下JavaScript代码的操作?varresult=getA()||getB()||getC()||'allofthemwereundefined!';我想做的是继续评估语句或方法,直到它得到一些东西而不是null。我希望调用者代码简单有效。 最佳答案 您可以为它创建一个方法。publicstaticTcoalesce(Supplier...ts){returnasList(ts).stream().map(t->t.get()).filter(t->t!=null).findFirst().orElse