以下C#代码的Java等价物是什么?

时间:2012-01-20 10:07:54

标签: c# java

我有一个有趣的问题。我理解以下C#代码允许用户在参数中输入空值:

public DateTime? date (DateTime dt) {}

用Java编码时的等价物是什么?

4 个答案:

答案 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来支持可为空。

对于其他类型,例如intdouble,您可以使用允许分配的框装版本IntegerDouble来达到相同的效果