草庐IT

g_null_acl

全部标签

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 - 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 - 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

java - 从数据库中检查 int 变量是否为 null 或为空

这个问题在这里已经有了答案:CheckingforanullintvaluefromaJavaResultSet(13个答案)关闭4年前。我有一个变量是:nocustomers=rs.getInt("CUST_TRAN_COUNT");无论是否为null,我都想执行。我试过了if(nocustomers==null)显示错误。我该如何解决?我新修改的代码是:try{query="select*fromSS_summarywheretxn_date=to_date('"+asatdate+"','YYYY-MM-DD')";st=conn.createStatement();rs=st.

java - PrintStream对象out被初始化为null,我们如何调用它的方法呢?

我在System看到过out的类对象(类型PrintStream)用null初始化值(value)。我们如何调用像System.out.prinln("");这样的方法??在System类中,out变量以这种方式初始化:packagejava.lang;publicfinalclassSystem{publicfinalstaticPrintStreamout=nullPrintStream();privatestaticPrintStreamnullPrintStream()throwsNullPointerException{if(currentTimeMillis()>0){re