久々のエントリです…皆さんがすごい深い内容ばかりエントリしてるので、おじけずいてエントリできませんでした…orz
気づくと半月もの間何もエントリしてませんでした…orzもう開き直ってマイペースに気楽にエントリすることにしました…
以下の内容は某SNS日記にも書いた気がしますが(^^;
Java6のソースコードとJava1.4のソースコードは互換性がなかった…
Java1.4のとき
java.sql.PreparedStatementインタフェース
http://java.sun.com/javase/ja/6/docs/ja/api/java/sql/PreparedStatement.html
java.sql.Statementインタフェース
http://java.sun.com/javase/ja/6/docs/ja/api/java/sql/Statement.html
などを実装したJDBCのラッパークラスを作っていました。
Java6ではこれらのインタフェースにそれぞれメソッドがいろいろと「追加」されてます。
あたりまえですがこれらを実装したクラスで、追加されたメソッドを「実装」しないとJava6ではコンパイルできません。…orz
入出力にJava6で追加になったクラスを使うものもあるので、メソッドを追加するとそのコードは今後はJava1.4でコンパイルできません。
たまたまこの話はJavaでしたが、これって、一般にオブジェクト指向言語の「インタフェース」のデメリットもしくは注意点なのでは?
「インタフェース」は公開してからは、「メソッドの削除」は原則不可能だということはわかっていましたが、「メソッドの追加」も慎重にすべきですね…