很难为它取一个简洁的标题。无论如何,假设我有一个父类:publicclassShape{publicDimensionsgetDimensions(){//Doessomegenericstuff.}}我有一个派生类,它覆盖了getDimensions方法:publicclassCircleextendsShape{publicDimensionsgetDimensions(){//Doessomestuff.super.getDimensions();}}当我在Shape.getDimensions上创建一个带有切入点的方面时,调用Circle.getDimensions时切入点被击
在扩展javax.swing.JFrame时,推荐使用setTitle("Title")或super("Title")设置标题的方法是什么在性能方面? 最佳答案 如果您对JFrame(在OpenJDK6-b14中)进行grepcode,并深入挖掘,您会看到构造函数JFrame()调用了构造函数Frame(),它调用Frame("")(link)。因此,如果您自己不指定对任何super构造函数的调用,则会添加隐式super(),因此调用会更有效(尽管非常轻微)super(“标题”)。 关于
我有这个基本的News界面interfaceNews{StringgetHeader();StringgetText();}和像SportsNews这样的具体类和FinancialNews提供特定方法,如getStockPrice(),getSport()等等。新闻旨在发送给interfaceSubscriber{voidonNews(Nnews);}问题是如何注册和维护订阅。我尝试的第一种方法是使用中央Aggregator,在Class之间保留map对象和Set>,但很快这种方法就显露出行不通了。这是所需的APIpublicclassAggregator{publicvoidsubs
我有几个Java类,它们扩展了通用List接口(interface)的各种实现。他们只是记录添加到列表中的任何内容。LoggingArrayList如下所示。顾名思义,它扩展了ArrayList。LoggingLinkedList类是相同的,只是它扩展了LinkedList。我的主要目标是避免为了使用不同的基类而必须复制所有通用代码。我尽可能地坚持DRY原则(不要重复自己)。首先,请不要提出更好的日志记录方式。那根本不是我真正的应用。这只是演示我遇到的问题的简单方法。我有两个密切相关的问题。第一个是标题中的问题。如何在实现接口(interface)但不扩展另一个类的Java类中引用“s
我有以下Java示例类:publicclassA{}publicclassSuper{protectedSuper(){}publicSuper(Aa){}}publicclassSubextendsSuper{}publicclassConsumer{publicConsumer(){Subsub=newSub(newA());//compilererror}}编译器错误指出参数不能应用于Sub中的默认构造函数,这是完全可以理解的。我很好奇的是这个决定背后的理由。Java在Sub中生成默认的空构造函数;为什么在这种情况下不能在幕后调用它?这主要是理智的手持情况,还是有技术原因?编辑我
在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新手,对以下代码有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
考虑这种情况。有地block,有的是住宅地block,有的是商业地block。也有业主。但是业主只能购买一block地block,它可以是住宅或商业。所以,这是我的代码。@Entity@Table(name="PLOT")@Inheritance(strategy=InheritanceType.JOINED)publicabstractclassPlot{privateintid;privateStringnumber;privateListowners=newArrayList();//gettersandsetters...}@Entity@Table(name="RESIDEN
作为主题中一般问题的一个实际例子,我想实现containsAllSet中的方法接口(interface)publicbooleancontainsAll(Iterablec){/*...*/}我认为这应该被允许,因为Collection是Iterable意思是这样的containsAll将涵盖接口(interface)要求。同样,更一般地说,能够实现带有参数父类(superclass)的接口(interface)似乎应该可行。但是,Eclipse说不行(还没有尝试直接使用javac)——有人可以解释一下原因吗?我敢肯定规范中有一些东西让它成为现在的样子,但我也想了解需求的动机。还是我错
为什么不允许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_