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

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

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

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

842閲覧

ダイヤモンド演算子の引数に2つの型を指定した場合について

aae_11

総合スコア178

Java

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

2グッド

0クリップ

投稿2020/04/29 00:52

以下のコードの、JpaRepository<MyData,Long> ここの部分の意味が分かりません。

package com.test.springboot.repositories; import com.shinya.springboot.MyData; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface MyDataRepository extends JpaRepository<MyData,Long> { }

<MyData,Long> ここの部分自体は調べた結果、総称型のダイヤモンド演算子であることが分かったのですが、引数を2つ指定した場合どのような挙動になるかが分かりません。
こちらの部分について、アドバイス頂ければ幸いです!

study_111, newyee👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

JpaRepositoryの定義の通り、この型は2つの型引数を必要とします。

(「ダイヤモンド演算子」は、<>のように「空の場合」だけを指す単語です)

投稿2020/04/29 00:55

maisumakun

総合スコア145201

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

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

aae_11

2020/04/29 01:05

ご回答ありがとうございます。 ダイヤモンド演算子ではなかったのですね... 貼って頂いたリンク読んでみます。
aae_11

2020/04/29 01:08

リンク先ページに「JpaRepository <T、ID>」こちらの記載があったのですが、「TやID」とはなんなのでしょうか...?
maisumakun

2020/04/29 01:10

> 「TやID」とはなんなのでしょうか...? 型引数(使うときに型を割り当てる)です。「JpaRepository<MyData,Long>」でしたらT=MyData、ID=Longとなります。
aae_11

2020/04/29 01:13

ご返信ありがとうございます。 なるほどです... TやIDは引数を入れることを意味しているだけであり、AやBでも良いということだったのですね...
m.ts10806

2020/04/29 01:30 編集

総称型・ダイアモンド演算子の解説調べると仮型引数については幾らでも出てくるはずで。 https://www.ne.jp/asahi/hishidama/home/tech/java/generics.html どんなに調べてもちゃんと読まなければ調べた時間もその記事を提供した人の厚意も無駄になるわけで。 それはQAサイトでの指摘や回答でも同じわけで(成長が見られない人の共通項)
aae_11

2020/04/29 09:00

「 public class クラス名<仮型引数 ,仮型引数…> { 」仮型引数を複数指定した場合、指定した複数の型以外のフィールドは持つことが出来ないという意味になるのでしょうか?
maisumakun

2020/04/29 09:03

> 指定した複数の型以外のフィールドは持つことが出来ないという意味になるのでしょうか? 型引数をどのように使うかはクラス次第です。
m.ts10806

2020/04/29 09:47

メソッドの引数とか戻り値とかレベルの本気の基礎が抜けている… フレームワークやってる場合じゃないですね。いや本当に。そりゃ読んでも理解できないわけだ。
aae_11

2020/04/29 10:10

>型引数をどのように使うかはクラス次第です。 例えばなのですが、クラスの定義は「 public class クラス名<仮型引数A ,仮型引数B> { 」こうだとした場合は、必ず、仮型引数A ,仮型引数Bのフィールドを実装しなければならないのかと思いまして... 仮型引数Aのフィールドのみの実装ではダメなのでしょうか?
swordone

2020/04/29 10:16

ちょっと待った。「フィールド」って何のつもりで使っていますか?
maisumakun

2020/04/29 10:17

> こうだとした場合は、必ず、仮型引数A ,仮型引数Bのフィールドを実装しなければならないのかと思いまして... 理屈の上では全く使わない型指定があっても構いませんが、(継承関係で発生してしまう場合を除けば)無駄なだけなのでそのような設計はしません。
swordone

2020/04/29 10:17

場合によってはいったんListとかMapとかの使い方に戻ったほうがいいです。
aae_11

2020/04/29 10:19 編集

フィールドは「private 仮型引数A test;」などのように、クラスの、メンバ変数であると理解しています。
aae_11

2020/04/29 10:20

>理屈の上では全く使わない型指定があっても構いませんが 勉強になりました。ありがとうございます。
aae_11

2020/04/29 11:38 編集

javaは初心者なのでね
Zuishin

2020/04/29 11:48

馬鹿にしたんじゃなく感心したんですよ。でも使っていたので、感心は取り消しました。
m.ts10806

2020/04/29 14:06 編集

おそらく見ている人みなさん気になってると思うのですけど >javaは初心者なのでね 「java”は”」と限ってますが、何だったら初心者ではないと自信がありますか? ざっと見た感じ質問してきたどの言語でも「基礎に立ち返って学習しましょう」のような指摘は散々受けてきているようですが。 自信があるから質問したことがないとして、 何かしらの言語で初心者から脱しているのであればJavaであろうとなんであろうと基礎を身に付けずにできることではないのは承知のはずです。 自身の調査の甘さが改善されないままずっと来ていて今回のような言い訳で終わっているパターンもよく見ます。本当に身に付ける気あります? >いったんListとかMapとかの使い方に戻ったほうがいい この指摘の意味することが理解できてない状態で、何の言語が初心者ではないのか私には思い当たりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問