1. ホーム
  2. java

[解決済み] Javaに自動型推論はありますか?

2022-03-09 02:10:10

質問

はありますか? auto C++にあるような変数型がJavaにもあるのですか?

例を挙げます。

for ( auto var : object_array)
    std::cout << var << std::endl;

for( auto var : object_array)
    var.do_something_that_only_this_particular_obj_can_do();

Javaで強化されたforループがあるのは知っていますが、autoはあるのでしょうか?ない場合、これを行うためのハックはありますか?私はC++11の新機能を参照しています。

どのように解決するのですか?

Java10では var のような識別子で、C++の auto 参照 sorrymissjacksonの回答 .

Java10以前は、このような auto キーワードを使用します。と同じループを実現することができる。

for ( Object var : object_array)
  System.out.println(var);

Javaには局所変数があり、そのスコープは定義されたブロックの中にあります。 CやC++と似ていますが、autoやregisterというキーワードはありません。しかし、Javaコンパイラは、明示的に初期化されていないローカル変数の使用を許可せず、コンパイルエラーを出します(通常、コンパイラが警告を出すだけのCやC++とは異なります)。 提供 ウィキペディア .

JavaではC++のような主流の型推論はなかったのですが . があった。 RFE が、これは "Will not fix" としてクローズされました。というものでした。

<ブロッククオート

型宣言が冗長であることは、人間にとって2つの点でメリットがある。 まず、冗長な型は貴重な文書として機能します。 がどのような型であるかを知るために getMap() の宣言を探す必要があります。 を返します。第二に、この冗長性によって、プログラマは意図したとおりの という型があり、コンパイラによるクロスチェックの恩恵を受けることができる。