草庐IT

java - 我应该使用静态初始值设定项还是父类(super class)

我有一个名为Parser的接口(interface)。两个类ParserA,ParserB实现了Parser。publicinterfaceParser{publicvoidinitialize();publicintParse(byte[]data);}我对初始化感到困惑。ParserA初始化两个Map。ParserB初始化两个Map。但不同的数据。Maps使用常量数据进行初始化。表示不是来自运行时。那么我应该使用方法1还是方法2?方法一:classInitializer{//havetwomapsasmember}ClassParserAextentsinitializerimpl

java - Hibernate 映射的父类(super class)关系和覆盖

我有一个抽象的MappedSuperClass,Participant,它由三种“Participant”扩展。然后每个人都使用自己的“项目”类型,也是一个抽象的MappedSuperClass。但是,我希望基类了解项目,以便我可以编写通用代码来与参与者交互。我如何使用Hibernate注释来指定它?以及如何在ExtendedParticipant和ExtendedProject类中覆盖它?每个参与者类型和每个项目类型都有自己的数据库表,其中包含我无法更改的现有数据和ID(跨表不唯一)。下面的代码给出了IDE错误“多对一的属性不应该是‘映射的父类(superclass)’”。@Mapp

java - getDeclaredMethods() 和隐藏的父类(super class)静态方法

根据http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#getDeclaredMethods%28%29,Class.getDeclaredMethods()应该只包含“由类声明”的方法。但是,我通过下面的测试代码得到了一些非常令人惊讶的结果:importjava.util.Arrays;classA{publicstaticAm1(){returnnull;}publicstaticAm2(){returnnull;}publicstaticAm3(){returnnull;}}classBext

java - 如果父类不实现可序列化,则序列化子类?

publicclassEmployee2extendsEmployee1{}publicclassEmployee1extendsEmployee0{}publicclassEmployee0{}现在我序列化Employee2类和gettheerrorjava.io.NotSerializableException:Employee2现在如果将Employee1类定义更改为publicclassEmployee1extendsEmployee0implementsjava.io.Serializable{}它工作正常但请注意Employee0仍然没有实现Serializable基类必须

java - 在 Java 中扩展一个类,以便可以将任何父类强制转换为它

我觉得这是不可能的,但如果不是,那将非常有用。我正在尝试以子类只有新方法、没有新构造函数、没有新字段的方式扩展父类。所以子类的底层数据结构与父类完全相同。当我想为内置的java类(例如Vector3d)提供附加功能时,往往会发生这种情况。鉴于底层数据是相同的,是否有可能以任何方式将初始化为父类的对象向下转换为子类,以便我可以使用添加的功能。作为我的意思的示例,请参见下文importjavax.vecmath.Vector3d;publicclassVector3dPlusextendsVector3d{//samefields,sameconstructorsasVector3dpub

java - 将通用父类(super class)转换为子类

这是我的第一个SO问题,我希望它对读者和我自己都有用!在过去的两天里,我用谷歌搜索并避开了这个世界。我有抽象模型和存储类,从中派生出具体模型和存储类:abstractclassFood{}abstractclassFoodStorage{abstractvoidsetFood(Tfood);}classAppleextendsFood{}classBasketextendsFoodStorage{@OverridevoidsetFood(Appleapple){//Savethatappletothebasket}}没问题。现在,我希望能够调用save()直接在Apple上例如,将其持

Java 将参数约束到公共(public)父类(super class)

动机我有一个Either类,表示两种类型之一的值,或语义不同的状态。在某些情况下,无论值是哪个备选方案,对其进行操作都是有值(value)的。问题我想要一个采用Consumer的(非静态)方法,其中T是L的父类(superclass)型和R,其中L和R是类的类型参数。目前,java让我这样做:(静态实现)publicstaticvoidcollapse(Eithere,Consumerop)当然,对于非静态实现,我不能对L施加约束。和R,因为它们已经为相关实例定义。我需要对T施加的那些约束相反,但java不允许我编写以下内容,因为它一次只允许父类(superclass)型或子类型约束中

java - 上限泛型 VS 父类(super class)作为方法参数?

据我所知,使用上限泛型和使用父类(superclass)作为方法参数都接受相同的可能参数。哪个是首选,两者之间有什么区别(如果有)?上限泛型作为参数:publicvoiddoSomething(Tfoo){}父类(superclass)作为参数:publicvoiddoSomething(Foofoo){} 最佳答案 这是一个上限类型参数。使用super创建下限,你不能真正为类型参数做。Youcan'thavealowerboundedtypeparameter.这会有所不同,例如,如果您想要传递List.因此,对于以下两种方法:p

java - 在Java中,是否可以通过父类的子类的构造函数来调用父类的父类(super class)构造函数?

我知道措辞有点困惑和奇怪,但请耐心等待,我不知道如何用更短的措词来表达。假设你有一个名为SuperBlah的类,你在一个名为Blah的类中继承了它,然后你将Blah继承到一个名为ChildBlah(所以SuperBlah-Blah-ChildBlah)。如果Blah没有构造函数?对于那些拒绝的人,那为什么这有效?我们有一个名为BlusterBug的类,它扩展了Critter类,并在BlusterBug的构造函数中调用了super。Critter没有构造函数,但Critter扩展的类有构造函数。(我故意省略了类的其余代码)publicclassBlusterCritterextendsC

java - 如何确保从子类中的方法在抽象父类(super class)中调用某些方法 (Java)

我有一个带有方法的抽象父类(superclass)AdoSomething().A的子类必须实现doSomething(),但也有一些公共(public)代码应该在每次子类调用时调用doSomething().我知道这可以这样实现:publicclassA{publicvoiddoSomething(){//Thingsthateverysub-classshoulddo}}publicclassBextendsA{publicvoiddoSomething(){super.doSomething();//Doingclass-B-specificstuffhere...}}虽然这似乎