Tag: null

检查“get”调用链是否为null

假设我想执行以下命令: house.getFloor(0).getWall(WEST).getDoor().getDoorknob(); 为了避免NullPointerException,我必须在以下情况下执行以下操作: if (house != null && house.getFloor(0) && house.getFloor(0).getWall(WEST) != null && house.getFloor(0).getWall(WEST).getDoor() != null) … 是否有一种方法或已经存在的Utils类更优雅地执行此操作,让我们说下面的内容? checkForNull(house.getFloor(0).getWall(WEST).getDoor().getDoorknob());

编译器的行为方式与generics方法的null参数不同

以下代码与Eclipse完美编译,但无法使用javac进行编译: public class HowBizarre { public static void doIt(P value) { } public static void main(String[] args) { doIt(null); } } 我简化了代码,所以现在根本不使用T. 不过,我没有看到错误的原因。 出于某种原因,javac决定T代表Object,然后抱怨Object不符合T的界限(这是真的): HowBizarre.java:6:不兼容的类型; 推断类型参数java.lang.Number,java.lang.Object不符合类型变量的范围P(T) 发现: 无效 要求:无效 doIt(null); ^ 请注意,如果我将null参数替换为非null值,则编译正常。 哪个编译器行为正确,为什么? 这是其中之一的错误吗?

Hibernate order by nulls last

Hibernate与PostgreSQL DB一起使用,当按列排序desc时,将null值设置为高于非null值。 SQL99标准提供关键字“NULLS LAST”来声明空值应该低于非空值。 使用Hibernate的Criteria API可以实现“NULLS LAST”行为吗?

带有null参数的Java方法调度

为什么我(显然)会直接传递null作为参数,或者传递一个我赋值为null的Object ? Object testVal = null; test.foo(testVal); // dispatched to foo(Object) // test.foo(null); // compilation problem -> “The method foo(String) is ambiguous” public void foo(String arg) { // More-specific System.out.println(“foo(String)”); } public void foo(Object arg) { // Generic System.out.println(“foo(Object)”); } 换句话说,为什么foo(…)的(注释掉的)第二次调用没有被调度到foo(Object) ? 更新:我使用Java 1.6。 我可以毫无问题地编译Hemal的代码,但我仍然无法编译。 我看到的唯一区别是Hemal的方法是静态的,而我的方法则不是。 但我真的不明白为什么这应该有所作为……? 更新2:解决了。 我的类中有另一个方法foo(Runnable),因此调度程序无法明确地选择最具体的方法。 (请参阅我在Hemal的第二个答案中的评论。)感谢大家的帮助。

为什么原始数据类型在Java中不能为“null”?

声明任何基本类型数据(如int或double它们会初始化为0或0.0 。 为什么我们不能将它们设置为null ?