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

本文关键字:等价物 是什么 Java 代码 以下 | 更新日期: 2023-09-27 18:20:57

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

public DateTime? date (DateTime dt) {}

在Java中进行编码时,等效项是什么?

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

如果我回忆正确,java中的每个对象都可以为null。基元类型(int, double, float, char等)不能为null。要与它们一起使用null,您必须使用它们的对象对应项(Integer, Double, Float...

关于日期,java.util.Date是一个Object,因此它可以为null。日历也是如此;GregorianCalendar。

等效代码将类似于:

public Date date(Date dt) throws NullPointerException { 
  if (dt == null) throw new NullPointerException();
  ...
}

在C#中你可以使用?以允许基元类型中的null val(例如,强制对象null引用错误)。我不明白为什么这件事会困扰你。例如,如果您在java中需要一个可为null的整数参数,那么您只需要使用java.lang.Integer而不是基元int类型。

由于Java中的Date是一个类,因此对它的引用可能已经为null。换句话说;

public Date date(Date dt) { }

是Java的相同版本。

注意,参数在Java中也可以为null,而在C#版本中不能为null。

如何在Java中呈现可为null的基元类型int?说"Java不像C#那样有一个可以为null的特性。"这是一个答案吗?

Java不支持用户定义的值类型(例如不能为null的类型)。在这方面,Java DateTime对象已经通过允许分配null来支持nullable。

对于其他类型,如intdouble,您可以通过使用允许指定为null的盒装版本IntegerDouble来实现相同的效果。