草庐IT

Inheritance

全部标签

java - 枚举继承,或类似的东西

我有一个字符串(这是一条消息)作为输入,我需要根据该字符串执行4种可能的操作之一我知道有eunm.valueOf()选项,但我有4个不同的枚举,每个枚举几乎没有可能的消息。看起来像:publicenumfirst{ONE,TWO,THREE};publicenumsecond{FOUR,FIVE,SIX};publicenumthird{SEVEN,EIGHT,NINE};publicvoidwork(Stringmessage){//HereIwanttocomparemessagestringtooneofthe3enums}是否可以用枚举的一种方法来做到这一点?或者我应该只尝试创

c# - C#和Java中继承的区别

这个问题在这里已经有了答案:WhyC#implementsmethodsasnon-virtualbydefault?(10个答案)关闭8年前。我和我的Java程序员friend正在讨论继承。当我们对同一种代码得到不同的结果时,对话几乎达到了顶峰。我在.NET中的代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceConsoleDemo{classProgram{staticvoidMain(string[]args){BaseobjBaseRefToDerived=newDerived();

java - 在 Java 中使用 Inheritance Equality 有什么问题?

在我正在阅读的“CoreJavaVolume1”一书中,它说相等不应该与继承一起使用。所以,我有以下示例,它似乎有问题:publicclassMain{publicstaticvoidmain(String[]args){Cc=newC("Test",10);Dd=newD("Test",10);if(c.equals(d))System.out.println("Equal");elseSystem.out.println("Unequal");if(d.equals(c))System.out.println("Equal");elseSystem.out.println("Une

java - 从类和接口(interface)重新继承静态字段

interfaceA{publicstaticStringname="A";}interfaceB{publicstaticStringname="B";}classXimplementsA{}classYextendsXimplementsB{}publicvoidtest_getField(){try{assertEquals(B.class.getField("name"),Y.class.getField("name"));}catch(NoSuchFieldExceptione){fail("Gotexception");}}为什么Y.class.getField("name

java - Hibernate 可嵌入继承

我有一个对象,它的字段可以是多种对象类型。此对象在单个表中编码,其中包含字段子类型的鉴别器列。这些子类型中的每一个都将其字段映射到父对象表中的列。我似乎无法在hibernate中对此进行建模。无论表中的子类型数据是什么,下面的代码都会为getSubfield()返回null。架构idtypewhositwhatsit+----+------+--------+---------+|1|"A"|"test"|null||2|"B"|null|"test"|+----+------+--------+---------+DomainObjects@EntitypublicclassPare

java - 从外部类继承内部类与其他内部类

我很困惑为什么这是允许的publicclassFoo{classBarextendsFoo{}}这是不允许的publicclassFoo{classBarextendsFoo{}classFooeyextendsBar{}}在调用父类(superclass)型构造函数之前,编译器通知它不能引用Fooey.this。这是允许的publicclassFoo{staticclassBarextendsFoo{}classFooeyextendsBar{}}这是怎么回事?我在哪里可以找到有关内部类继承如何工作的更多信息?编辑我想到了两个相当糟糕的想法;内部类扩展外部类,内部类扩展其他静态内部类

java - 通过公共(public) API 导出非公共(public)类型

如果我只有很少的返回非公共(public)类型的工厂方法和一对给出这种非公共(public)类型变量的方法怎么办?这会在NetBeans中产生带标题的警告消息。结果,公共(public)API将仅包含两组配对方法。原因是使我的类型层次结构密封(就像Scala中的密封类)并允许用户仅通过工厂方法实例化这些类型。所以我们在某种意义上得到了DSL。例如,日程表类由日历字段的约束表示。有一些类型的约束——Range、Singleton、List、FullSet——以NumberSet接口(interface)为根。我们不想公开这些类型以及Schedule如何与它们交互。我们只需要用户的规范。所

java - Java 编译器如何知道继承的方法?

我们在Java中使用继承将父类(superclass)中类似的行为抽象出来,让所有的子类继承。这样做的一个优点是,我们现在只有一个方法副本要维护(即在父类(superclass)中)。ClassAnimal{publicvoidmakeNoise(){}publicvoidsleep(){}}ClassCatextendsAnimal{//OverridethemakeNoisemethodpublicvoidmakeNoise(){}}ClasssomeClass{publicstaticvoidmain(Stringargs[]){Catfluffy=newCat();fluffy

java - 抽象类和公共(public)代码

我对抽象类及其真正用途有疑问。考虑以下场景:interfaceA{voidexecute();}classAOneimplementsA{publicvoidexecute(){x=getX();..functionalityspecifictoA..y=getY();..morefuntionalityspecifictoA}privateXgetX(){..returnx;}privateYgetY(){..returny;}}classATwoimplementsA{publicvoidexecute(){x=getX();..functionalityspecifictoB..

java - 是否可以动态地将父级注入(inject) Java 中的类层次结构?

给定一个类层次结构:A->B->C->instanceOfC是否有可能(以及如何)在运行时临时插入一个类,如下所示:A->B->B'->C->instanceOfC? 最佳答案 看点如果你使用AspectJ,这是可能的。AspectJ有一个declareparents语句,使您能够做到这一点,并且通过LoadTimeWeaving,您也应该能够在运行时做到这一点。但是,您将无法在已经加载的类上执行此操作(至少不容易,如果您先卸载该类,它可能会起作用)。引用:AspectJQuickReferenceAspectJinAction(书