草庐IT

null-test

全部标签

java - new type[0] 和 null 之间的区别 - java

有什么区别type[]a=newtype[0];和type[]a=null;这两种形式都占用内存吗?有什么相同点/不同点吗? 最佳答案 第一个(newtype[0])实际上会创建一个数组对象(因此占用内存)。您可以使用(大小为0的)数组对象,例如获取其长度或对其进行迭代,但当然,您可以不访问其任何元素。因此,您可以将它传递给任何不对数组长度做出假设(而是进行适当检查)的函数,并且它会起作用。第二个(null)不创建任何对象。如果您尝试访问任何成员,您将得到一个异常(exception)。

java - Jackson ObjectMapper 即使使用 NON_NULL 也会抛出 NullPointerException

当使用以下JSON并且“phones”或“emailAddresses”为空时,我将收到NullPointerException。JSON:{"item":{"messages":{"user.phone.missing":{"type":"warning","key":"user.phone.missing","message":"Userprofiledoesnothaveaphonenumber","code":null},"user.email.missing":{"type":"warning","key":"user.email.missing","message":"Us

java - 为什么 JUnit 5 测试不从抽象类继承 @Test 注解?

我刚刚意识到(在将遗留代码从JUnit4迁移到JUnit5时)我们的一些测试方法没有执行,因为它们没有@Test注释。他们没有它,因为它们覆盖了抽象父类(superclass)(存在注释的地方)的方法。我可以通过向每个方法添加@Test轻松解决此问题。但我想知道这是否是预期的行为。它从JUnit4更改为5,但我在officialJUnit5UserGuide中找不到任何相关信息或其他任何地方。根据thisquestion,注解通常不被继承。但似乎这是在新的JUnit版本中有意更改的。(或者我错过了什么?)抽象测试类importorg.junit.jupiter.api.Test;abs

java - 标准 Hamcrest 匹配器检查集合是否为空或 null?

是否有使用标准Hamcrest匹配器的以下断言语句的较短版本?Collectioncollection=...assertThat(collection,is(anyOf(nullValue(Collection.class),emptyCollectionOf(Element.class))));我意识到有一种方法可以创建自定义匹配器,希望可能已经有一些东西可以解决这个问题而无需任何额外的代码更改。 最佳答案 没有开箱即用的解决方案,更糟糕的是,either()由于this而无法使用漏洞。所以最短的方法是这样的:assertTha

java - Hibernate 在 ManyToOne 关系中处理 long 0 值而不是 NULL

我使用Hibernate访问遗留数据库。对于某些表,未强制执行父子引用完整性,并且子表中的某些“父”列使用long0值而不是NULL来表示“无父”。我仍然想在@ManyToOne和@OneToMany字段中使用这些关系,但是得到EntityNotFound错误,因为0值不对应到主表中的任何记录。我有哪些选择? 最佳答案 使用NotFound注释:@NotFound(action=NotFoundAction.IGNORE)参见http://docs.jboss.org/hibernate/core/3.6/reference/en-

java - 测试调用 : how to do set up common to all test suites

有没有办法知道JUnit4测试类是否由测试套件启动?我有全局的东西,我想在所有测试之前运行(关于内存数据库),所以我想在测试服中做它。但是,我仍然希望能够在没有测试服的情况下一次启动一个测试,所以我需要知道我是否需要在测试的@Before部分初始化全局事物......有人知道吗如果它是可能的? 最佳答案 有几种方法可以实现这一点。最简单和最简单的方法是在套件的开始和结束时运行一个“测试”,它会设置您的数据库,然后设置一个全局标志。在您的@Before和@After测试中,您检查此标志,并在必要时进行设置/拆卸。@RunWith(Su

java - System.console() 从 Eclipse 返回 null 但在命令提示符下没问题

当我从EclipseHelios使用System.console时,它​​总是返回null。但是,当我直接从命令行使用它时(即从命令提示符手动编译和执行java源代码),我确实得到了一个控制台对象。为了知道为什么会发生这种情况,我检查了this关联。根据它,当我从Eclipse运行我的Java代码时,后台作业调度程序必须启动我的JVM。这是什么意思?当我从命令行启动时,我的JVM启动有何不同?我还检查了this关联。McDowell在这里说cmd.exe是一个控制台设备。那么我再次感到困惑,这到底是一个控制台设备? 最佳答案 因为是

Java HashMap 在 get() 调用时返回 null

我们在尝试获取与HashMap中给定键关联的值时观察到NullPointerException。以下是我将用来说明问题的示例代码。publicclassTest{privateMapemployeeNameToAgeMap=newHashMap();publicintgetAge(StringemployeeName){if(!employeeNameToAgeMap.containsKey(employeeName)){intage=getAgeFromSomeCustomAPI(employeeName);employeeNameToAgeMap.put(employeeName,

java - 为什么在 Java 中允许初始化对 Null 的引用?

在以下使用JDBC的示例中(尽管这个问题并不特定于JDBC):Connectionconn=null;try{.....DothenormalJDBCthinghere....}catch(SQLExceptionse){if(conn!=null){conn.close();}}如果我没有将conn初始化为null那么编译器会提示说在catchblock中我不能使用一个没有的引用被初始化。Java默认将对象引用初始化为null那么为什么我需要显式地将其初始化为null。如果编译器不喜欢以null开头的引用的原始值,为什么它甚至接受我的显式初始化?注意:我使用EclipseLuna作为

java - JsonParseException : Unrecognized token 'http' : was expecting ('true' , 'false' 或 'null' )

我们有以下字符串,它是写入HDFS文件的有效JSON。{"id":"tag:search.twitter.com,2005:564407444843950080","objectType":"activity","actor":{"objectType":"person","id":"id:twitter.com:2302910022","link":"http%3A%2F%2Fwww.twitter.com%2Fme7me4610012","displayName":"","postedTime":"2014-01-21T11:06:06.000Z","image":"https%3