我有一个有趣的问题。我理解以下C#代码允许用户在参数中输入空值:
public DateTime? date (DateTime dt) {}
用Java编码时的等价物是什么?
答案 0 :(得分:6)
如果我没记错,java中的每个对象都可以为空。
原始类型(int, double, float, char
等...)不能为空。要使用null,必须使用Object对象(Integer, Double, Float...
)
关于日期,java.util.Date是一个Object,因此它可以为null。同样适用于Calendar& GregorianCalendar的。
等效代码将类似于:
public Date date(Date dt) throws NullPointerException {
if (dt == null) throw new NullPointerException();
...
}
在C#中你可以用吗?允许原始类型中的null val(例如,强制执行对象空引用错误)。我不明白为什么这件事困扰你。如果您需要java中的可为空的整数参数,则只需使用java.lang.Integer
而不是原始int
类型。
答案 1 :(得分:1)
由于Java中的Date是一个类,因此对它的引用可能已经为null。换句话说;
public Date date(Date dt) { }
...是Java的版本。
请注意,该参数在Java中也可以为null,而在C#版本中则不能。
答案 2 :(得分:0)
How to present the nullable primitive type int in Java?说“Java没有像C#那样可以为空的功能。”这是答案吗?
答案 3 :(得分:0)
Java不支持用户定义的值类型(例如,不能为null的类型)。在这方面,Java DateTime对象已经通过允许指定null来支持可为空。
对于其他类型,例如int
和double
,您可以使用允许分配的框装版本Integer
和Double
来达到相同的效果