質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

372閲覧

java.util.Arrays#asListのJavadocについて

TrueOgre2

総合スコア26

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2018/05/09 17:21

編集2018/05/11 09:28

java.util.ArraysのJavadocを読んでいます。asListのメソッドの説明で、次の記述があります。

Java

1@SafeVarargs 2public static <T> List<T> asList(T... a) 3```戻り値は、List<T>だと思うのですが、その前にある<T>は何でしょうか? 4また、asListがメソッド名で、その後の()の中が引数だと思うのですが(T... a)はどう解釈すればよいのでしょうか? 5```Java 6List<String> stooges = Arrays.asList("Larry", "Moe", "Curly"); 7```(T... a)の具体例が、("Larry", "Moe", "Curly")になる理解の仕方がわからないです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

戻り値は、List<T>だと思うのですが、その前にある<T>は何でしょうか?

ジェネリックメソッドの定義で、戻り値の直前に<…>の形式で型パラメータを宣言しています。メソッドを呼び出す際に渡す引数の型でTが決まります。

また、asListがメソッド名で、その後の()の中が引数だと思うのですが(T... a)はどう解釈すればよいのでしょうか?

可変長引数の定義で、「T...」で複数の引数を受け取ることを指定しています。aは仮引数。

具体例について

java

1List<String> stooges = //④戻り値をList<String>型のstoogesに代入 2 Arrays.asList("Larry", "Moe", "Curly"); //①可変長引数として、同じ型の引数を3個渡し 3 //②引数からTがStringであると決定 4 //③実行結果としてList<String>型の値を返す

左辺の変数定義にあるList<String>で型が決まると勘違いしている人がいたりしますが、ジェネリックメソッドの型は引数の型から決定されます。
代入式は右辺を処理して作成したアウトプットを左辺に代入しているので。

投稿2018/05/09 21:59

編集2018/05/09 22:14
tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TrueOgre2

2018/05/11 07:33

どうもありがとうございました。 詳しく回答をして頂いたので、とても分かりやすかったです。
guest

0

<T>はジェネリクスの宣言です。引数や返り値にTというジェネリクスの型名を使うことの宣言です。引数の型や返り値の代入先などからコンパイラが類推してくれることが多いのですが、明示的に宣言して使うこともできます。

また型名のあとに...が付くものは可変長引数といい、その型の引数を何個でも渡すことができるというものです。あるいはその型の配列を渡すことができます。

今回の場合、T...の部分にStringが渡されたので、TがStringと類推されます。そのため返り値がList<String>として解釈されます。

投稿2018/05/09 17:30

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TrueOgre2

2018/05/11 07:35

どうもありがとうございました。 とても分かりやすかったです。
guest

0

参考情報

  • Javadoc ドキュメンテーションコメントの書き方

https://qiita.com/maku77/items/6410c67ce95e08d8d1bd

<T> は ジェネリクス の表記です。(javadoc の気泡とは関係ないです)
List<String> とか List<Integer> のようなクラスを一般的に示すために List<T> と書きます。
google で "java ジェネリクス" で検索してみてください、

検索結果からの紹介

  • 【Java入門】ジェネリクス(Generics・総称型)の使い方

https://www.sejuku.net/blog/22699

投稿2018/05/09 21:16

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TrueOgre2

2018/05/11 07:34

どうもありがとうございました。 Javadocと無関係なこと、理解できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問