Gegeben sind die folgenden Klassendefinitionen.
public class Foo extends Object {
private Object f(Object x, Foo y) {...}
public String g(String x, Bar y) {...}
protected Object f(Object x, Bar y) {...}
public Object f(String x, Object y) {...}
}
public class Bar extends Foo {
public Integer f(String x, Foo y) {...}
public Object f(Bar x, Foo y) {...}
public String f(Object x, Bar y) {...}
}
Außerdem gelten die zusätzlichen Subtypbeziehungen Integer ⊑ Object und String ⊑ Object aus den Java-Bibliotheken.
Ich soll den Bindungsprozess von Java nachvollziehen , indem ich die drei Mengen der erreichbaren, anwendbaren und spezifischsten Methoden für den folgenden Methodenaufruf angebe:
new Bar().f(new String("foo"), new Bar());
Bis jetzt habe ich die folgenden Methoden angegeben
Vor allem bei den spezifischen Methoden bin ich mirjedoch nicht sicher ,ob das so korrekt ist .
1. Erreichbare Methoden:
{g[String, Bar], f[String, Object], f[String, foo], f[Bar, Foo], f[Object, Bar]}
2. Anwendbare Methoden:
{f[String, Object], f[String, Foo], f[Object, Bar]}
3. Spezifische Methoden:
{f[String, Foo], f[Object, Bar]} ????
public class Foo extends Object {
private Object f(Object x, Foo y) {...}
public String g(String x, Bar y) {...}
protected Object f(Object x, Bar y) {...}
public Object f(String x, Object y) {...}
}
public class Bar extends Foo {
public Integer f(String x, Foo y) {...}
public Object f(Bar x, Foo y) {...}
public String f(Object x, Bar y) {...}
}
Außerdem gelten die zusätzlichen Subtypbeziehungen Integer ⊑ Object und String ⊑ Object aus den Java-Bibliotheken.
Ich soll den Bindungsprozess von Java nachvollziehen , indem ich die drei Mengen der erreichbaren, anwendbaren und spezifischsten Methoden für den folgenden Methodenaufruf angebe:
new Bar().f(new String("foo"), new Bar());
Bis jetzt habe ich die folgenden Methoden angegeben
Vor allem bei den spezifischen Methoden bin ich mirjedoch nicht sicher ,ob das so korrekt ist .
1. Erreichbare Methoden:
{g[String, Bar], f[String, Object], f[String, foo], f[Bar, Foo], f[Object, Bar]}
2. Anwendbare Methoden:
{f[String, Object], f[String, Foo], f[Object, Bar]}
3. Spezifische Methoden:
{f[String, Foo], f[Object, Bar]} ????