草庐IT

Inheritance

全部标签

java - 使用仅调用重写的父类(super class)方法的子类方法有好处吗?

在重构时,我在子类中遇到了以下方法:publicvoiddisposeResultsTable(){super.disposeResultsTable();}保留此方法而不是简单地允许调用继承的父类(superclass)方法有什么好处? 最佳答案 我能想到的唯一技术原因是Michael在评论中提出-使受限方法成为public。不过,我能想到一些人为的原因。例如,这可能是放置断点的方便位置,用于调试子类的disposeResultsTable调用。或者这可能是作为一个占位符-“记得为这个类实现这个方法”,或者可能有人想明确地向这段代

java - JPA @Entity 继承

我研究JPA/Hibernate@Entity继承已有一段时间了,但似乎找不到任何可以解决我想要实现的目标的东西。基本上,我希望能够根据需要定义一个包含所有列和表映射的@Entity。然后,我希望能够使用在每个“子实体”的主体中定义的不同组的@Transient方法在许多不同的位置扩展@Entity。这是我正在努力实现但迄今为止没有成功的基本示例:@Entity@Table(name="mountain")publicclassMountainEntityBaseimplementsSerializable{publicIntegermountainId=0;publicInteger

java - 检查注释处理器中是否缺少父类(super class)

在注释处理器中获取TypeElement时,您可以使用方法getSuperClass()。AccordingtotheJavaDoc,一个没有显式扩展任何东西的类型(换句话说,Object是父类(superclass))或者是一个接口(interface)将返回一个NoType和NONE作为TypeKind。不管整个模型/镜像API似乎都会在一瞬间让您感到困惑的事实,我如何可靠地检查这一点?以下是一些代码摘录://CastissafesinceTypeKindischeckedbeforethisfinalTypeElementel=(TypeElement)annotatedElem

java - 转换为具体类并在 Java 中调用方法

假设我们有一个名为A的基类和一些子类(B、C、D等.).大多数子类都有方法do()但基类没有。类AA提供了一个名为getObject()的方法,该方法将创建类型为B或C或D等,但返回类型为A的对象。如果此方法可用,如何将返回的对象转换为具体类型并调用其do()方法?编辑:我不允许更改A类、子类或AA的实现,因为我使用的是封闭的SourceAPI..是的,如您所见,它确实存在一些设计问题。 最佳答案 您可以使用instanceof进行测试并调用do()方法:Aa=aa.getObject();if(ainstanceofB){Bb=(

java - 扩展多个类

我知道Java不允许扩展多个类,因此不支持多重继承。我只想知道我的问题是否有解决方法。我有一个名为CustomAction的类,它需要扩展两个抽象类,BaseAction和QuoteBaseAction。我无法更改这些抽象类中的任何一个并使一个扩展另一个。这些抽象类具有我需要使用的方法实现。我也无法创建接口(interface),因为一个接口(interface)只能扩展另一个接口(interface)。有什么想法吗? 最佳答案 给你...publicclassCustomActionextendsBaseAction{classI

java - Java中的继承和重载

我正在为考试而学习,我需要一些帮助来理解以下代码片段中发生的事情。classA{publicvoidmethod1(AX){System.out.println("A");}}classBextendsA{publicvoidmethod2(){System.out.println("B");}}classCextendsB{publicvoidmethod1(Ax){System.out.println("C");}}classDextendsC{publicvoidmethod1(Dx){System.out.println("D");}}publicclasstest{publi

java - 为什么程序打印的高度值是0,而不是我设置的?

我对运行时如何调用方法和构造函数感到困惑,因为派生构造函数打印了3次,高度打印为0我已经尝试在方法和构造函数中打印一些消息以了解到底发生了什么publicclassDerivedextendsBase{publicstaticvoidmain(Stringargs[]){System.out.println("HelloWorld");Derivedd=newDerived();}protectedDerived(){System.out.println("InsideDerivedConst");showAll();}protectedvoidshowAll(){System.out

java - 检索方法或构造函数的调用者实例(不是类)

是否可以检索方法/构造函数的调用者实例?这个问题已经发布了,但每次的答案都在谈论调用者类(使用堆栈跟踪)而不是调用者实例。如果存在解决方案,构建对象图(具有通用父类(superclass)型)并使用默认构造函数处理父子导航会非常方便。publicclassTestCallStack{publicstaticclassBaseClass{BaseClassowner;////ok,thisisthecorrectwaytodoit//publicBaseClass(BaseClassowner){//this.owner=owner;//}publicBaseClass(){//this

java - Apache Maven : What is the difference between Inheritance, 聚合和依赖项?

我是Maven的新手,我想了解为什么我公司的模块被组织成“模块组”,而且每个子模块都显式声明其父模块。我不太明白POM引用关于differencebetweeninheritanceandaggregation的内容。.例如,一个父模块:example.grouputilpomUtilParentutil_clientutil_coreutil_server还有它的一个child:utilexample.grouptrunk-SNAPSHOTexample.group.utilutil_corejarUtilCore为什么要双向声明?它是多余的吗?更令人困惑的是,一些util子模块相互

java - 带有类型列表和继承的方法

我在使用从另一个(类型化)类继承的类型化List参数的方法时遇到了一些麻烦。让我们保持简单:publicclassB{publicvoidtest(Listi){}}B类有一个无用的泛型T,而test()需要一个整数列表。现在如果我这样做:publicclassAextendsB{//don'tcompile@Overridepublicvoidtest(Listi){}}我收到“类型A的方法测试(列表)必须覆盖或实现父类(superclass)型方法”错误,这是不应该发生的。但是删除列表的类型是可行的...尽管它不依赖于泛型类。publicclassAextendsB{//compi