サンプルコード
例えば以下のようなコードがあります。
class Foo {
public void exec() {
System.out.println("foo");
}
}
class FooFactory {
public static Foo createFoo() {
return new Foo();
}
}
class Main {
public static void main(String[] args) {
Foo foo = FooFactory.createFoo();
foo.exec();
}
}
実行結果は以下のとおりです。
$ java Main
foo
このFooをインタフェースにします。 Mainクラスはそのままです。
interface Foo {
public void exec();
}
class Bar implements Foo {
public void exec() {
System.out.println("bar");
}
}
class FooFactory {
public static Foo createFoo() {
return new Bar();
}
}
このMainクラスを再コンパイルせずに実行すると、以下のようなエラーが出ます。
$ java Main
Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface Foo, but class was expected
at Main.main(Main.java:4)
Mainクラスを再コンパイルすると、以下のようになります。
$ java Main
bar
辞書
- Java
- abi: まだありません。