dポイントプレゼントキャンペーン実施中!

UnaryOperator<T>などがあれば、ああ、ジェネリクスにおいて任意のクラス型をここで使用するんだろうな、と言うのは分かりますが、複数あった場合のその記述の際のルールが未だ分かりません。

例えば、BiFunction<T,U,R>などでは、ああ、TがBiFunctionでの第一引数で使用される型、Uが第二引数で使用される型、Rが返り値の型なんだな、と言うことは分かるのですが、こうした並び・順序性に規則やルールはあるのでしょうか。
(型パラメータは任意の文字列を使用して良いと言うのは理解していますが、順序性において、参考書には記載がありませんでした。ネットで探しましたが、こちらも探し方が悪いのか見つかりません。)

基本的に関数型インターフェースでの戻り値ありのものの場合、返り値がある時には最後にそれを持ってこなければいけないだとか、あるいは引数が複数ある場合には、その順序性を保たなければならないだとかのルールです。
あるいは順序は関係なく、そのようなルールが無い、使用しているものを書けば良く、あえて分かりやすいように便宜的に皆こう記載している、と言うのであればその旨教えていただけると幸いです。

A 回答 (2件)

はっきりしたものは無いけど


①一つの場合 T
②2つの場合 T、Uの順
③戻り型はRで最後に
④辞書タイプのクラスではではK(キー)、V(値)の順
⑤沢山有って順序が重要な時は A1、A2、A3・・・の順

他にも有った気がするけど
あんまりジェネリクスは自分で作ることは少ないので・・・
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なるほど、一般的にはそうなのですね。
参考にさせて頂きます。

お礼日時:2021/01/01 19:45

言語仕様としては


型パラメータ A が型パラメータ B に依存するなら B は A より前になければならない
はず (未確認) だけど, そのような依存関係のない型パラメータ同士ならどのような順序であってもかまわない. ただ, プログラムを「人間が見る」ことを考えれば, 型パラメータの名前や順序には「それなりに合理的な理由」を要求するのがふつうだと思うよ.

極論すれば「(T, U) -> R」に対して
WierdBiFunction<U, R, T>
としても*言語仕様としては*なんら問題ない. 問題ないけど... 「なるほど, それはいいや」って思います? それとも「こいつ, 頭おかしいんじゃね~か」って思いますか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

なるほど・・・できればそれが明文化された規約があればそれを知りたい感じですよね。

>「それなりに合理的な理由」
が個々の人間で判断されて良いと言う自由なケースと、その一段だけ型に落とした「並びはこうしたものが推奨されます」だとか「特に規約はありませんが、一般的にはこうします」などなど。

オブジェクトの直列化の出力ファイルの拡張子がこんな感じですよね。
拡張子に特に決まりはないが、.serでつけることが一般的である、などなど。

お礼日時:2021/01/01 19:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!