Tag: null

如何在java的内存中表示null

可能重复: Java内存中究竟是什么null 有没有人知道如何在对象或任何东西的内存中表示空值。 在dot net中,它由空指示符布尔值和相应类型的值表示( 请参阅此处 )。 所以有谁知道它是如何在java中完成的?

什么时候java对象在构造期间变为非null?

假设你正在创建一个java对象: SomeClass someObject = null; someObject = new SomeClass(); someObject在什么时候变为非null? 是在SomeClass()构造函数运行之前还是之后? 为了澄清一点,比如说另一个线程要检查someObject为null而SomeClass()构造函数是在完成的一半时,它是null还是非null? 另外,如果someObject是这样创建的,那会有什么不同: SomeClass someObject = new SomeClass(); someObject不会是null?

StringBuilder追加()和null值

我有一个String列表,我想在它们之间用空格连接它们。 所以我正在使用StringBuilder 。 现在,如果任何String为null ,则它们在String中存储在StringBuilder为“null”。 这是一个小程序来说明问题: public static void main(String ss[]) { StringBuilder sb = new StringBuilder(); String s; s = null; System.out.println(sb.append(“Value: “).append(s)); } 我希望输出为“Value:”但它出现为“Value:null” 有没有解决这个问题的方法?

是否存在不允许空值的基本Java Set实现?

Java Set接口的API指出: 例如,某些实现禁止null元素,而某些实现对其元素的类型有限制 我正在寻找一个不需要排序的基本Set实现(如ArrayList为List接口提供的)并且不允许null 。 TreeSet , HashSet和LinkedHashSet都允许null元素。 另外,TreeSet要求元素实现Comparable 。 似乎目前没有这样的基本Set 。 有谁知道为什么? 或者,如果确实存在,我可以找到它? [编辑]:我不想允许null ,因为稍后在代码中我的类将迭代集合中的所有元素并调用特定方法。 (我实际上正在使用HashSet<MyRandomObject >)。 我宁愿快速失败而不是失败,或者由于集合中的null而意外地产生一些奇怪的行为。

是否有标准的Java List实现,不允许向它添加null?

假设我有一个List ,我知道我永远不想为它添加null 。 如果我向它添加null,则意味着我犯了一个错误。 所以每次我调用list.add(item)我会调用if (item == null) throw SomeException(); else list.add(item); if (item == null) throw SomeException(); else list.add(item); 。 是否有一个现有的List类(可能在Apache Commons或其他东西中)为我做这个? 类似的问题: 帮助删除Java列表中的空引用? 但我不想删除所有空值,我想确保它们从未被添加到第一位。

处理protobuffers中的空值

我正在研究从数据库中获取数据并构造protobuff消息的东西。 鉴于可以从数据库中为某些字段提取空值,我将在尝试构建protobuff消息时获得Null指针exception。 从线程http://code.google.com/p/protobuf/issues/detail?id=57中的protobuffs中不支持知道null,我想知道处理NPE的唯一其他方法是抛出是将手动检查插入到与原型相对应的java文件中,如下所示! message ProtoPerson{ optional string firstName = 1; optional string lastName = 2; optional string address1 = 3; } ProtoPerson.Builder builder = ProtoPerson.Builder.newBuilder(); if (p.getFirstName() != null) builder.setFirstName(p.getFirstName()); if (p.getLastName() != null) builder.setLastName(p.getLastName()); if (p.getAddress1() != null) builder.setAddress1(p.getAddress1()); … 那么有人可以澄清是否有任何其他可能有效的方法来处理protobuff构造期间的空值?

空对象模式

似乎有越来越多的人说你永远不应该返回null,而应该总是使用Null对象模式。 我可以在使用集合/ map /数组或调用布局函数(如isAuthenticated()时看到NOP的有用性, 如下所示) 。 我没有发现任何完全令人信服的东西。 当我试着整理自己的想法时,请在这里忍受我。 我的理解是,您返回一个已被“清零”的有效对象,而不是返回一个空对象。 因此,例如,客户端将调用以获取对象: Car car = getCar(); 如果不使用NOP,则需要在调用其上的任何方法之前检查从getCar()返回的对象是否为null: if (car != null){ color = car.getColor(); doScreenStuff(color); } 使用NOP而不是getCar()返回null,它现在返回一个已被有效“清零”的Object。 所以现在我们不再需要做if (car != null)并且可以只请求颜色。 因此,我认为当我们调用颜色时,我们的“归零”对象将返回“无”。 这有什么用? 似乎向前移动并在空对象上调用方法会导致像检查null一样痛苦。 现在,当需要显示信息时,我们需要检查颜色是不是“无”,高度不是0,或者你有什么其他值。 因此,基本上,如果汽车为空,则不检查处理的开始,而是检查我们拥有的汽车对象是真车还是替代品。 IE我们不想显示一堆空对象,所以我们需要一些方法来过滤掉所有空对象。 这个过滤是一个额外的步骤,就像调用if(car!= null)一样。 唯一的区别是,通过检查null,我们可以在通过抛出exception发现car对象为空时立即停止处理,而使用NOP,我们在空对象上调用方法并继续前进,直到它到达时间为止显示对象,此时我们过滤掉空。 此外,您需要知道空对象返回的值。 IE确实getColor()返回“none”或“empty”。 显然必须有一些我忽略的东西。 提前致谢。

将null传递给方法

我正在阅读优秀的清洁代码 一个讨论是关于将null传递给方法。 public class MetricsCalculator { public double xProjection(Point p1, Point p2) { return (p2.x – p1.x) * 1.5; } } … calculator.xProjection(null, new Point(12,13)); 它代表了处理这个问题的不同方法: public double xProjection(Point p1, Point p2) { if (p1 == null || p2 == null) { throw new IllegalArgumentException(“Invalid argument for xProjection”); } return (p2.x – p1.x) * 1.5; […]

在Java中检查空值的最佳方法是什么?

在调用对象的函数之前,我需要检查对象是否为null,以避免抛出NullPointerException 。 最好的方法是什么? 我考虑过这些方法。 哪一个是Java的最佳编程实践? // Method 1 if (foo != null) { if (foo.bar()) { etc… } } // Method 2 if (foo != null ? foo.bar() : false) { etc… } // Method 3 try { if (foo.bar()) { etc… } } catch (NullPointerException e) { } // Method 4 — Would this […]

NullPointerException JPanel和CardLayout出错

我正在为课堂上的酒店管理软件工作,我的代码遇到了一些问题。 在这一点上,我只是试图将我在一个单独的类中创建的JPanel添加到我的主gui中。 任何帮助将不胜感激。 〜谢谢! Exception in thread “main” java.lang.NullPointerException at java.awt.Container.addImpl(Unknown Source) at java.awt.Container.add(Unknown Source) at hotelManage.HotelSystem.showGUI(HotelSystem.java:75) at hotelManage.HotelSystem.(HotelSystem.java:27) at hotelManage.HotelSystem.main(HotelSystem.java:115) 注意:错误发生在“jpanel.add(”Room“,room.getRoomPanel())行;” 代码:HotelSystem.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class HotelSystem extends JFrame implements ActionListener { /** * */ private static final long serialVersionUID = 1840835913045151061L; private JFrame mainFrame; private JPanel mainPanel; private JButton […]