草庐IT

Overriding

全部标签

java - Android onBackPressed() 没有被调用?

在从AppCompatActivity扩展的MainActivity中,我想像这样重写onBackPressed方法:@OverridepublicvoidonBackPressed(){Log.d("MainActivity","onBackPressed");Toast.makeText(getApplicationContext(),"onBackPressed",Toast.LENGTH_SHORT).show();}但是onBackPressed没有被调用。如果我不覆盖onBackPressed,应用程序会关闭,当我按下后退按钮时,如果我覆盖它,它不会关闭。我的其余Activ

java - 调用抛出 Checked 异常的覆盖方法

看完Whycan'toverridingmethodsthrowexceptions,我明白如果声明为的方法抛出一个Checked异常,子类中的覆盖方法只能声明抛出该异常或其子类:classA{publicvoidfoo()throwsIOException{..}}classBextendsA{@Overridepublicvoidfoo()throwsSocketException{..}//allowed@Overridepublicvoidfoo()throwsSQLException{..}//NOTallowed}因为SocketExceptionIS-AIOExcepti

c# - 等效于 Java 1.6 @Override 用于 C# 中的接口(interface)

Thisquestion给出的答案是Java的@Override在C#中等效于方法上的override关键字。但是,从Java1.6开始,@Override注释也可以应用于接口(interface)。这个的实际用途是,在Java中,当一个类声称它实现了一个接口(interface)方法而它不再实现时(例如,如果接口(interface)方法被删除),你会得到编译错误。C#中是否有等效的功能?一些代码示例:Java:publicinterfaceA{publicvoidfoo();//publicvoidbar();//Removedmethod.}publicclassBimpleme

java - 实现 Comparable、compareTo 名称冲突 : "have the same erasure, yet neither overrides the other"

我想要一个compareTo方法,它接受一个Real(一个用于处理任意大且精确的实数的类[好吧,只要它现在的长度小于2^31])和一个compareTo接受对象的方法,但Java不允许,而且我没有足够的经验知道原因。我刚刚尝试修改类以实现Comparable,但在下面收到了这些错误消息。我真的不明白错误消息是什么意思,但我知道这与我试图通过我创建的每个方法的所有不同方法签名为类提供一些灵active的可怕方式有关,我可以修复它通过删除compareTo(Objectother)方法,但理想情况下我想保留它。所以我真正想问的是:有没有一种方法可以在不删除compareTo(Objecto

java - 如何覆盖 java 枚举中的(最终)equals 方法?

我在覆盖Enum中的equals方法以使其与其他类兼容时遇到问题。Enum实现了一个接口(interface),其想法是可以测试该接口(interface)的所有实现是否相等,无论它们的类型如何。例如:publicinterfaceGroup{publicPoint[]getCoordinates();}publicenumBasicGroupsimplementsGroup{a,b,c;//simplified,theyactuallyhaveconstructors//+fieldsandmethods}publicclassOtherGroupimplementsGroup{//

java - 是否可以隐藏或降低对 Java 中继承方法的访问?

我有一个类结构,我希望基类中的一些方法可以从直接从基类派生的类访问,而不是从派生类派生的类。根据Java语言规范,可以覆盖继承方法的访问规范,使它们更公开,但不能更私密。例如,这是我需要做的事情的要点,但是是非法的://DefinesmyMethodpublicclassBase{protectedvoidmyMethod(){}}//UsesmyMethodandthenhidesit.publicclassDerivedOneextendsBase{@OverrideprivatevoidmyMethod();}//can'taccessmyMethod.publicclassDe

java - 实现具有相同方法的多个接口(interface)

此代码完美运行。方法test()适用于两个接口(interface)。幕后到底发生了什么?这个特性在实际场景中有什么用处?interfaceA{voidtest();}interfaceB{voidtest();}classCimplementsA,B{publicvoidtest(){System.out.println("abc");}}Aa=newC();a.test();Bb=newC();b.test(); 最佳答案 因为它是一个接口(interface),所以没有什么坏处。您基本上是通过实现A和B为您的C类使用蓝图。A和

java - 什么是 "override-equivalence",它与 @Override 有什么关系?

阅读Javadoc对于@Override注释,我遇到了以下规则:Ifamethodisannotatedwiththisannotationtypecompilersarerequiredtogenerateanerrormessageunlessatleastoneofthefollowingconditionshold:Themethoddoesoverrideorimplementamethoddeclaredinasupertype.Themethodhasasignaturethatisoverride-equivalenttothatofanypublicmethoddec

java - hibernate : How override an attribute from mapped super class

通用实体,父类(superclass):@MappedSuperclasspublicabstractclassGenericEntity{privateIntegerid;publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.id=id;}}POJO:@Entity@Table(name="POJO_ONE")@SequenceGenerator(name="HB_SEQ_POJO_ONE",sequenceName="SEQ_POJO_ONE",allocationSize=1)publicclassPojoO

java - 添加参数后覆盖具有泛型返回类型的方法失败

我想知道为什么这是一个有效的覆盖:publicabstractclassA{publicabstractSuppliergetSupplier();publicstaticclassBextendsA{@OverridepublicSuppliergetSupplier(){returnString::new;}}}然而这不是:publicabstractclassA{publicabstractSuppliergetSuppliers(Collectionstrings);publicstaticclassBextendsA{@OverridepublicSuppliergetSup