[解決済み】C#の「var」キーワードに相当するJavaは何ですか?
質問
の一つの使い方は ヴァル キーワードは暗黙の型宣言です。に相当するJavaの構文は何ですか? var ?
解決方法は?
ありません。残念ですが、完全な型名をタイプアウトする必要があります。
編集:投稿されてから7年後、ローカル変数の型推論(
var
がJava10で追加されました。
編集:投稿されてから6年、下からのコメントを集めるため。
-
C#が
var
キーワードは、.NETでは名前のないTypeを持つことが可能だからです。例えばvar myData = new { a = 1, b = "2" };
この場合,適切な型は
myData
. 6年前、これはJavaでは不可能でした(すべてのTypeは、たとえそれが非常に冗長で野暮ったいものであったとしても、名前を持っていました)。この間に変わったかどうかはわかりません。 -
var
とは異なります。dynamic
.var
iableは100%静的型付けされたままです。これではコンパイルできません。var myString = "foo"; myString = 3;
-
var
は、文脈から型が明らかな場合にも有効です。例えばvar currentUser = User.GetCurrent();
自分が担当するどのコードでも言えることですが。
currentUser
にはUser
または派生クラスが含まれています。明らかに、もしあなたの実装するUser.GetCurrent
はintを返すので、多分これはあなたにとって不利になります。 -
とは何の関係もありません。
var
しかし、メソッドを他のメソッドでシャドーイングするような奇妙な継承階層を持つ場合 (例えばnew public void DoAThing()
) 、非仮想的なメソッドは、キャストされたTypeの影響を受けることを忘れないでください。これが良いデザインを示すような現実的なシナリオは想像できませんが、期待通りにいかないかもしれませんね。
class Foo { public void Non() {} public virtual void Virt() {} } class Bar : Foo { public new void Non() {} public override void Virt() {} } class Baz { public static Foo GetFoo() { return new Bar(); } } var foo = Baz.GetFoo(); foo.Non(); // <- Foo.Non, not Bar.Non foo.Virt(); // <- Bar.Virt var bar = (Bar)foo; bar.Non(); // <- Bar.Non, not Foo.Non bar.Virt(); // <- Still Bar.Virt
示されるように、仮想メソッドはこの影響を受けません。
-
を初期化する不器用な方法はありません。
var
を実際の変数なしで使用することができます。var foo1 = "bar"; //good var foo2; //bad, what type? var foo3 = null; //bad, null doesn't have a type var foo4 = default(var); //what? var foo5 = (object)null; //legal, but go home, you're drunk
この場合、昔ながらの方法でやればいいんです。
object foo6;
関連
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] アクティビティに割り当てられない
-
[解決済み] アニメーションGIFの表示