続き

型とinterfaceの区別が必要かもしれない。

  • interfaceは型情報を持つ
  • classも型情報を持つ
  • 変数定義の際に型付けを行う

昨日http://d.hatena.ne.jp/kilrey/20040330のは一つの変数(仮引数だが)に「複数の型の積集合」という型を付けていた。genericsの本来の用法からは明らかに外れているのだけど、一つの変数に「複数の型の積集合」という型を与えること自体は極めて自然だと思う。*1

通常の変数定義String str;がstr∈String型を示すなら、
付きのArgument arg;が
arg∈Argument型=Cloneable型∩EventListener型を示すということになる。

*1:非明示的に与えればHaskellの型推論だ。