[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12682] P83 の考察



遠藤です。

83ページの考察のところですが
jlsのフィードバックページで質問してみました。

> comments: In the discussion of 5.1.10 capture conversion, there is the
following sentence.
>
> Worse, the
> designer of an API might reason that the signature using a wildcard is
what the callers of
> the API require, and only later realize that a type safe
implementation was precluded.
>
> I don't understand what is "the signature using a wildcard". Is it
"public static void reverse(List<?> list);"  ?

Yes. The discussion is trying to say List<?> is the most natural formal
parameter type, but that without capture conversion, there is no
type-safe way to write a reversal routine.

答えをいただいて、Discussionの趣旨は概ね理解はできるのですが
もとの文書の意味がいまだ良く分からずです。

以下、私の超解釈です。()の部分は私の想像です。

さらに悪いことに、(reverseメソッドの)APIのデザイナが
(Tをシグネチャに使うよりも)
ワイルドカードを使ったシグネチャが呼び出し側からの要求だと思い、
(reverseからrevを呼ぶために
 List<?>がList<T>に代入互換であるという単純な言語仕様を作ってしまうと)
あとになって型安全性が失われていることに気付く。


APIデザイナが言語仕様まで決める権限を持っているという
前提はやりすぎでしょうか。

趣旨は分かったのでよかったかと。
 

-- 
// Y. Endoh