В Java, предположим, что у меня есть 3 класса, C простирается от B, который простирается от А.в Java Приведение к базовому типу
class X {
interface A {}
interface B extends A {}
interface C extends B {}
void f(A a) {}
void test() {
C c = new C()
B b = (B) c;
f(b);
}
}
Если я что-то вроде этого, как показано на test()
выше:
C c = new C()
B b = (B) c;
f(b);
f()
принимает b
как тип C
с C
и B
оба простираются от A
. Я хотел f()
получить b
как тип B
, а не тип C
.
Есть ли все-таки, чтобы заставить это рассвет?
Это именно то, что я пытаюсь понять. Я хочу, чтобы параметр показывал поведение B. Я предполагаю, что мне нужно создать новый экземпляр B из C, прежде чем передать его f. Спасибо. – simao
Если вы хотите, чтобы f работал на B, почему бы просто не создать B? Куда C входит? – tpdi