orlin614:
私のプロジェクトでは、私はスーパークラスとそれから延びる2つのサブクラスがあります。各サブクラスで別々に上書きされ、スーパークラスのメソッドがあります。私はそれがパラメータとしていずれかのサブクラスのオブジェクトを取得して(属してオブジェクトを実行したサブクラスに依存)のサブクラスの一つでオーバーライドメソッドを呼び出します(別のクラスで)メソッドを導入することが可能かどうかを知りたいです。
public class Superclass{
public int method(){return 0;}
}
public class Subclass1 extends Superclass{
public int method(){return 1;}
}
public class Subclass2 extends Superclass{
public int method(){return 2;}
}
public class CallingClass{
public static int dependantCall(Superclass parameter){return parameter.method}
私のような何かを行うことができるようにしたいです
Subclass1 subclassObject = new Subclass1;
System.out.println(CallingClass.dependantCall(subclassObject));
出力を得ます
1
プラシャント・パンディー:
はい、それは完全に可能です。ここではその方法は次のようになり方法は次のとおりです。
public <T extends Superclass> void foo(T subclassObject) {
...
}
または:
public void foo(Superclass obj) {
...
}
上記の方法では、あなたにもサブクラスオブジェクトを渡すこともできます(これらは共変データ型です)。