有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

oop继承和转换:这是好的java吗?

看看这段代码(来自here

abstract class EntityA {
    AssocA myA;
    abstract void meet();
}

abstract class AssocA {
    int something;
    abstract void greet();
}

class AssocAConcrete extends AssocA {
    void greet() {
        System.out.println("hello");
    }
    void salute() {
        System.out.println("I am saluting.")
    }
}

class EntityAConcrete extends EntityA {
    void meet() {
        System.out.println("I am about to meet someone");
        ((AssocAConcrete)myA).salute();
    }
}

对于父类和关联类,有两个并行继承树。问题在于第23行:

((AssocAConcrete)myA).salute();

这是一种痛苦,我的代码里到处都是这种东西。尽管这一行是实体的具体实现的一部分,但我需要提醒它,我想使用AssocA的具体实现,Assocaccrete

是否有某种注释来声明这种关系?还是有更好、更通俗的Java方式来表达这种设计?谢谢


这是对@Dave的回应,因为我想在

有趣!所以调用看起来像这样:

AssocAConcrete myAssoc = new Assoca();
EnitityA<T extends AssocA> myEntity = new EntityA<AssocAConcrete>();
myEntity.setAssoc(myAssoc);
myAssoc.salute();

是吗?那真的很酷。我想我会用的


共 (0) 个答案