草庐IT

super-jump

全部标签

java - 如何在实现接口(interface)但不扩展另一个类的 Java 类中引用 super 方法?

我有几个Java类,它们扩展了通用List接口(interface)的各种实现。他们只是记录添加到列表中的任何内容。LoggingArrayList如下所示。顾名思义,它扩展了ArrayList。LoggingLinkedList类是相同的,只是它扩展了LinkedList。我的主要目标是避免为了使用不同的基类而必须复制所有通用代码。我尽可能地坚持DRY原则(不要重复自己)。首先,请不要提出更好的日志记录方式。那根本不是我真正的应用。这只是演示我遇到的问题的简单方法。我有两个密切相关的问题。第一个是标题中的问题。如何在实现接口(interface)但不扩展另一个类的Java类中引用“s

java - 不能直接调用父类(super class)型构造函数——为什么不呢?

我有以下Java示例类:publicclassA{}publicclassSuper{protectedSuper(){}publicSuper(Aa){}}publicclassSubextendsSuper{}publicclassConsumer{publicConsumer(){Subsub=newSub(newA());//compilererror}}编译器错误指出参数不能应用于Sub中的默认构造函数,这是完全可以理解的。我很好奇的是这个决定背后的理由。Java在Sub中生成默认的空构造函数;为什么在这种情况下不能在幕后调用它?这主要是理智的手持情况,还是有技术原因?编辑我

java - 在 clone() 中我们使用 super.clone() 然后访问一个不在 super 中的变量,这是怎么回事?

在clone方法的通常实现中有一些我不明白的地方。如果您查看以下代码中tryblock的第一行,我们正在调用super.clone(),它将创建父类(superclass)的实例,并返回对该实例的Object引用。现在,该实例不一定包含hireDay,那么我们怎么说copy.hireDay?它确实可以正常编译,但如果实例不包含hireDay,它不会崩溃吗?publicObjectclone(){try{Employeecopy=(Employee)super.clone();//copyID,name,andsalary!copy.hireDay=(Date)hireDay.clone

Java:从父类(super class)列表中获取子类

我是java新手,对以下代码有2个问题:classAnimal{}classDogextendsAnimal{}classCatextendsAnimal{}classRatextendsAnimal{}classMain{Listanimals=newArrayList();publicvoidmain(String[]args){animals.add(newDog());animals.add(newRat());animals.add(newDog());animals.add(newCat());animals.add(newRat());animals.add(newCat

java - Hibernate 继承 - 获取父类(super class)实例并转换为子类

考虑这种情况。有地block,有的是住宅地block,有的是商业地block。也有业主。但是业主只能购买一block地block,它可以是住宅或商业。所以,这是我的代码。@Entity@Table(name="PLOT")@Inheritance(strategy=InheritanceType.JOINED)publicabstractclassPlot{privateintid;privateStringnumber;privateListowners=newArrayList();//gettersandsetters...}@Entity@Table(name="RESIDEN

java - 具有方法参数父类(super class)的接口(interface)实现

作为主题中一般问题的一个实际例子,我想实现containsAllSet中的方法接口(interface)publicbooleancontainsAll(Iterablec){/*...*/}我认为这应该被允许,因为Collection是Iterable意思是这样的containsAll将涵盖接口(interface)要求。同样,更一般地说,能够实现带有参数父类(superclass)的接口(interface)似乎应该可行。但是,Eclipse说不行(还没有尝试直接使用javac)——有人可以解释一下原因吗?我敢肯定规范中有一些东西让它成为现在的样子,但我也想了解需求的动机。还是我错

java - 为什么不允许 System.out.println(super)?

为什么不允许System.out.println(super)?System.out.println(this);这没关系,this.toString()被自动调用和打印。当然,用实例变量代替this也是可以的。但是,this和super可以按照我所知道的方式使用。System.out.println(super);那么为什么会失败呢?我认为它应该隐式调用super.toString()。我已经阅读了Java规范文档,但我没有找到原因。 最佳答案 在http://java.sun.com/docs/books/jls/second_

java - 没有测试用例的 super JUnit 类

我有三个JUnit测试类,它们都有一些通用代码,包括相同的setup()方法。因此,我将这段代码分解到它自己的扩展TestCase的类中,现在三个早期的JUnit测试类扩展了这个新类。新的父类(superclass)本身不包含任何测试。但是,在我们的构建中,JUnit运行所有JUnit测试类,包括没有测试的新父类(superclass)。它给出了这个错误:junit.framework.AssertionFailedError:Notestsfoundincom.acme.ControllerTest我可以通过创建一些在ControllerTest中不执行任何操作的简单测试来消除此错误

Java 编译器 super() 构造函数将军

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Useof‘super’keywordwhenaccessingnon-overriddensuperclassmethods我是Java的新手,最近阅读了很多有关它的文章,以获取更多关于该语言的知识和经验。当编译器插入自动代码时,我有一个关于继承方法和扩展类的问题。我一直在阅读,如果我使用一些方法创建类A,比如一个名为checkDuePeriod()的方法,然后创建一个扩展类A及其方法的类B。如果我随后在B类中调用方法checkDuePeriod()而不使用super.checkDuePeriod()语法,

Java:无法访问扩展子类中父类(super class)的 protected 成员

我想就此进行一些讨论,但我无法为我的案例推断出答案。仍然需要帮助。这是我的代码:packageJustRandomPackage;publicclassYetAnotherClass{protectedintvariable=5;}packageFirstChapter;importJustRandomPackage.*;publicclassATypeNameProgramextendsYetAnotherClass{publicstaticvoidmain(String[]args){YetAnotherClassbill=newYetAnotherClass();System.o