Ticket #531

インターフェースによる暗黙の abstract
Eröffnet am: 2002-08-31 13:07 Letztes Update: 2002-08-31 13:07

Auswertung:
Verantwortlicher:
(Keine)
Typ:
Status:
Offen
Komponente:
(Keine)
Meilenstein:
(Keine)
Priorität:
3
Schweregrad:
5 - Mittel
Lösung:
Keine
Datei:
Keine

Details

public interface Interface {
public String hello();
}

public abstract class Super implements Interface {
public void sayHello() {
String msg = hello();
System.out.println(msg);
}
}

public class Test extends Super {
public String hello() {
return "hello, world";
}

public static void main(String[] args) {
new Test().sayHello();
}
}

というようなアプリケーションがあったとして、
ふつうに処理すると、Interface#hello() は参照されていな
いからという理由で削られてしまうが、
そうすると Super#sayHello() から呼ばれている hello()
(バイトコード上では invokevirtual test1/Super/hello()
になっている)は解決できなくなり、Super.class は不正な
クラスファイルになってしまう。

対処のし方は、Interface が結果の jar に含まれるものか、
そうでないものかによって変わってくる(はず)。

Ticket-Verlauf (0/0 Historien)

Dateianhangliste

Keine Anhänge

Bearbeiten

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Anmelden