2012-01-20 21 views
6

興味深い質問があります。私は、次のC#コードで、ユーザーがパラメータにnull値を入力できることを理解しています。次のC#コードでJavaと同等のものは何ですか?

public DateTime? date (DateTime dt) {} 

Javaでコーディングするときは、

+0

私はあるとは思わない。 –

+0

このメソッドはnull可能なDateTimeを返しますが、その引数はNULL可能ではありません。 –

+1

'c#'の例では、null可能なDateTimeを返すことができます。パラメータとして渡されるDateTimeはnullにはできません。 –

答えて

5

私が正しく思い出すと、javaの各オブジェクトはnull可能です。 プリミティブ型(int, double, float, charなど...)はnullにできません。 nullを使用するには、オブジェクト対応(Integer, Double, Float...)を使用する必要があります。

日付に関しては、java.util.Dateはnullである可能性があります。カレンダー& GregorianCalendarでも同じです。あなたが使用することができますC#では

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

同等のコードのようなものでしょうか?プリミティブ型でnull valを許可する(オブジェクトのnull参照エラーを強制するなど)なぜこのことがあなたを悩ませるのか分かりません。たとえば、javaでnull可能な整数パラメータが必要な場合は、プリミティブintタイプではなく、java.lang.Integerを使用するだけです。

+0

この質問はC#とJavaの構文null可能なパラメータを設定するためのベストプラクティスを理解するだけです。あなたの答えに多くの感謝。 – AWb

+0

C#とjavaはやや似ていますが、依然として2つの異なる言語です。 Javaでは、C#とviceversaには対応していないものがいくつかあります。私の提案は、構文特有の問題を比較するのではなく、それらを機能上で比較することです。良い一日を。 – BigMike

+0

実際にNullPointerExceptionをスローするのは実行時エラーですが、nullを渡そうとするとC#構文がコンパイルエラーを引き起こします。むしろ異なるもの。 –

0

Javaでは、ユーザー定義の値型(nullにはできない型など)はサポートされていません。これに関して、Java DateTimeオブジェクトは、すでにヌルを割り当てることができるため、nullableをサポートしています。このようintdoubleなどの他のタイプについては、

、あなたはnullを割り当てることが許可されている箱入りバージョンIntegerDoubleを使用して同じ効果を得ることができます。

1

JavaのDateはクラスであるため、その参照はすでにnullになっている可能性があります。言い換えると;

public Date date(Date dt) { } 

...は、Javaの同じバージョンです。

パラメータは、Javaではnullでもかまいません。このパラメータはC#バージョンでは使用できません。

+0

いいえ、dtパラメータをチェックして、与えられた値がnullの場合はNullPointerExceptionをスローする必要があります(もちろん私は冗談を言っています:P) – BigMike

関連する問題