Tag: null

null == object和object之间的区别== null

嗨,我想知道上述比较之间的差异? 当我检查object.getItems() == null时,我得到空指针exception。 但是,如果我将其更改为null == object.getItems() ,它可以正常工作。 我确实调查了这个null!= object和object之间的区别!= null但是我没有得到满意的答案。

抛出不可能的NullPointerException

在几年前写的一个网络服务器项目中,我偶尔会得到一个非常奇怪的 – 在我看来 – 不可能是NullPointerException 。 它发生在用于在控制台上记录输出的实用程序方法中。 这是该方法的错误摘录: try { Encoder encoder = Base64.getEncoder(); if(logWriter != null) { logWriter.write(String.valueOf(System.currentTimeMillis())); logWriter.write(” “); logWriter.write(String.valueOf(level)); logWriter.write(” “); logWriter.write(encoder.encodeToString(Thread.currentThread().getName().getBytes()).replaceAll(“(?:\\r\\n|\\n\\r|\\n|\\r)”, “”)); logWriter.write(” “); logWriter.write(encoder.encodeToString(log.getBytes()).replaceAll(“(?:\\r\\n|\\n\\r|\\n|\\r)”, “”)); logWriter.write(“\r\n”); logWriter.flush(); } lastWriterActivity = System.currentTimeMillis(); } catch (IOException e) { println(“Failed to write log to file: ” + e, Color.RED); try { logWriter.close(); } […]

我将如何修复以下代码的NullPointerException?

我有这个代码,当我运行脚本时,我传入有效参数,但我继续获得NPE。 帮帮我? 码: private static Date getNearestDate(List dates, Date currentDate) { long minDiff = -1, currentTime = currentDate.getTime(); Date minDate = null; if (!dates.isEmpty() && currentDate != null) { for (Date date : dates) { long diff = Math.abs(currentTime – date.getTime()); if ((minDiff == -1) || (diff < minDiff)) { minDiff = diff; minDate = […]

java / beans validation – collection / map不包含空值

有@NotNull注释validation某个对象不为null。 有@NotEmpty注释,用于validation某个collection / map / string / …不为空。 是否还有一个注释,表明某个集合/映射不包含任何空值? 我无法找到它。 看起来很基本,我相信它必须符合JSR-303规范。

在Java中检查对象的NULL的最佳方法

我有一个解决方案来检查从对象中提取的NULL值,但我觉得可能有比我在这里做的更好的方法。 所以请建议我使用代码片段的最佳方法 🙂 我将把我的xml内容传递给unmarshalling方法然后将unmarshalledValues传递给null check方法(即ValidateInputFiled) Contents unmarshalledValues = unmarshalingContent( xml ); inputCheck = ValidateInputField( unmarshalledValues ); 我有一个POJO用于​​我的XML元素,如下所述, @XmlRootElement( name = “contents” ) public class Contents { @XmlElement String A; @XmlElement String B; @XmlElement String C; @XmlAttribute String D; public String getA() { return A; } public String getB() { return B; } public String getC() […]

如何在null自由设计中实现List,Set和Map?

在大多数情况下,当你可以返回null / empty对象以避免空值时,它很棒,但是像对象一样集合呢? 在Java中,如果在地图中找不到get(key) key ,则Map返回null 。 在这种情况下,我能想到避免null的最好方法是返回一个Entry对象,它可以是EmptyEntry ,也可以包含值T 当然我们避免使用null ,但是如果不检查它是否为EmptyEntry ,现在可以有一个类EmptyEntryexception。 有没有更好的方法来避免Map的get(K) null ? 为了论证,让我们说这种语言甚至没有null ,所以不要说只使用nulls 。

可以为null赋值null或与值类型变量进行比较吗?

在Java中,始终存在原始类型和引用,但不存在值类型。 Project Valhalla的目标之一是探索和孵化特征候选者,如价值类型 。 我想知道是否可以将null赋给值类型变量,或者是否可以将值类型变量与null进行比较。 如果没有,我也想知道原因。

Eclipse null分析:int类型的表达式需要未经检查的转换以符合’@Nonnull Integer’

配置Eclipse 4.2.0以执行空分析(配置为使用@javax.annotation.Nonnull等)时,以下代码将生成警告 空类型安全:int类型的表达式需要未经检查的转换以符合’@Nonnull Integer’ class C { static void foo(int i) { bar(i); // Warning } static void bar(@javax.annotation.Nonnull Integer i) { } } 我该如何解决这个问题(不使用@SuppressWarnings(“null”) )? 似乎分析器不知道盒装基元不能为null 。

空请求正文未被Spring @RequestBody @Valid注释捕获

我目前在Spring中遇到了@RequestBody注释的问题。 我目前在我的模型上正确设置了所有validation注释,并且在对象发布时它们工作得很好。 即使发布的请求主体完全为空或空对象“{}”,一切都按预期工作。 当有人试图发布“null”请求主体时,就会出现问题。 这以某种方式通过@Valid注释获取并且没有被捕获,当我尝试访问该对象时导致NullPointerException 。 我在下面粘贴了我的控制器片段。 @Secured({ ROLE_ADMIN }) @RequestMapping(method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_VALUE } ) public HttpEntity<Resource> addItem(@RequestBody @Valid Item item) throws Exception { Resource itemResource = this.itemResourceAssembler.toResource(this.itemService.save(item)); return new ResponseEntity<Resource>(itemResource, HttpStatus.CREATED); } 我在itemService.save()做了一些检查,看看数据库中是否存在一个项目,因为它被用作upsert。 当我访问传递给save的项时,我得到NullPointerException因为item为null。 我已经尝试使用@RequestBody的“required”参数,但只检查是否有POST的内容。 如上所述,只有当用户在没有引号作为请求主体的情况下发布“null”时,才会传递空项。 是否有自动的Spring注释或配置来阻止此null被传递,或者我应该只是把if(item == null) throw new Exception(); 在我的所有控制器中,这可能会出现?

Java ConcurrentHashMap不是线程安全的..是吗?

之前我正在使用HashMap public Map clients = new HashMap(); 现在我已经切换到ConcurrentHashMap以避免同步块,现在我遇到了问题,我的服务器每秒都有大量加载200-400个并发客户端,预计会随着时间的推移而增长。 现在看起来像这样 public ConcurrentHashMap clients = new ConcurrentHashMap(); 我的服务器设计就像这样。 我有一个工作线程来处理大量的数据包。 每个数据包都使用packetHandler子程序(不是线程的一部分)进行检查,几乎任何客户端都可以在任何时候调用它,它几乎就像静态但不是。 我的整个服务器大多是单线程的,除了数据包处理部分。 无论如何,当有人使用命令时,如在线计算所有客户并从中获取一些信息。 客户端也可能会在计数正在进行时断开连接并从ConcurrentHashMap中删除(这会导致我的问题)。 另外我想在这里添加一些代码。 int txtGirls=0; int vidGirls=0; int txtBoys=0; int vidBoys=0; Iterator i = clients.values().iterator(); while (i.hasNext()) { UserProfile person = (UserProfile)i.next(); if(person != null) { if(person.getChatType()) { if(person.getGender().equals(“m”)) vidBoys++; else //<– crash occurs here. vidGirls++; […]