我想知道是否可以将方法的参数设置为对象,它必须是扩展一个类并实现另一个类。这是一个示例:假设我有一个名为 ClassA 的类和一个名为 MyInterface 的接口。
public class ClassA {
/* code */
}
public interface MyInterface {
/* code */
}
假设在其他地方有一个名为 ClassB 的类,它既扩展了 ClassA 又实现了 MyInterface。
public class ClassB extends ClassA implements MyInterface {
/* code */
}
我也可以有一个 ClassC,它也扩展了 ClassA 并实现了 MyInterface:
public class ClassC extends ClassA implements MyInterface {
/* code */
}
我的问题是这样的:
假设我有一个名为 method1 的方法,并且在 method1 中我想要一个接受 Object 的参数。假设我希望这个 Object 是 ClassA 的子类,或者实际上是 ClassA 本身。这很容易做到:
public void method1(ClassA parameter) {
}
假设我还想要一个method2,并且在method2中我想要一个接受任何实现MyInterface的参数。同样,这很容易:
public void method2(MyInterface parameter) {
}
但是,如果我想要一个方法 3,并且我想要一个参数,它只接受 ClassA 的子类或 ClassA 本身的对象,并且实现 MyInterface,因此将接受 ClassB 和 ClassC,但不接受任何只扩展 ClassA 的类,或者只实现 MyInterface,或者都不实现。喜欢:
public void method3 ([Something that extends ClassA implements MyInterface] parameter) {
/* code */
}