簡體   English   中英

以下C#代碼的Java等價物是什么?

[英]What is the Java equivalent for the following C# code?

我有一個有趣的問題。 我理解以下C#代碼允許用戶在參數中輸入空值:

public DateTime? date (DateTime dt) {}

用Java編碼時的等價物是什么?

如果我沒記錯,java中的每個對象都可以為空。 原始類型( int, double, float, char等...)不能為null。 對於使用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值(例如,強制執行對象空引用錯誤)。 我不明白為什么這件事困擾你。 如果你需要java中的可以為null的整數參數,你只需要使用java.lang.Integer而不是原始的int類型。

由於Java中的Date是一個類,因此對它的引用可能已經為null。 換一種說法;

public Date date(Date dt) { }

...是Java的版本。

請注意,該參數在Java中也可以為null,而在C#版本中則不能。

如何在Java中呈現可空的原始類型int? 他說:“Java沒有C#所具有的可空功能。” 這是答案嗎?

Java不支持用戶定義的值類型(例如,不能為null的類型)。 在這方面,Java DateTime對象已經通過允許指定null來支持可空。

對於其他類型,例如intdouble ,可以通過使用允許賦值為null的盒裝版本IntegerDouble來實現相同的效果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM