我正在为我的项目使用继承的bean类。这里一些父类(superclass)将是空的,子类可以有字段&一些子类将是空的,父类(superclass)可以有字段。我的要求是从Sub类获取所有私有(private)/公共(public)字段以及从Super类获取所有公共(public)/protected字段。下面是我尝试实现的。但是我没有达到我的要求。请提供一些建议来实现这一目标。Fieldfields[]=obj.getClass().getSuperclass().getDeclaredFields();如果我使用上面的代码,我只能得到父类(superclass)字段Fieldfiel
我看到一个奇怪的行为,根据JMM,这似乎不应该发生。我有B类,它扩展了A类,A中的最终protected字段在A构造函数中初始化,B类在其构造函数中访问。但是,在极少数情况下,我在B中访问时会得到NPE。有什么想法吗?部分代码:classAsyncReplicationSourceGroupextendsAbstractReplicationSourceGroup{publicAsyncReplicationSourceGroup(DynamicSourceGroupConfigHoldergroupConfig){super(groupConfig);createReplicatio
我发现我可以在子类中这样做:ParentClass.variable=value;但有人告诉我,更好的做法是使用get/set方法,而不是直接访问类外的变量。尽管这是针对我在另一个类中有该类的实例的情况,而不是针对子类和父类(superclass)。那么有没有更好的方法来做到这一点,哪种方法通常被认为是最佳实践? 最佳答案 您有很多选择。super.field=x您必须有权访问该字段才能执行此操作field=x您必须有权访问该字段才能执行此操作。您也不能在child中有另一个字段,否则只会设置child的字段。setParentFi
我有一个带有方法的抽象父类(superclass)AdoSomething().A的子类必须实现doSomething(),但也有一些公共(public)代码应该在每次子类调用时调用doSomething().我知道这可以这样实现:publicclassA{publicvoiddoSomething(){//Thingsthateverysub-classshoulddo}}publicclassBextendsA{publicvoiddoSomething(){super.doSomething();//Doingclass-B-specificstuffhere...}}虽然这似乎
考虑以下代码片段:packagevehicle;publicabstractclassAbstractVehicle{protectedintspeedFactor(){return5;}}packagecar;importvehicle.AbstractVehicle;publicclassSedanCarextendsAbstractVehicle{publicstaticvoidmain(String[]args){SedanCarsedan=newSedanCar();sedan.speedFactor();AbstractVehiclevehicle=newSedanCar(
如果我有一个子类,其中包含我从父类覆盖的方法,并且在非常特殊的情况下我想使用原始方法,我该如何调用这些方法? 最佳答案 调用superclassA{intfoo(){return2;}}classBextendsA{booleansomeCondition;publicB(booleanb){someCondition=b;}intfoo(){if(someCondition)returnsuper.foo();return3;}} 关于java-如何从子类调用重写的父类方法?,我们在S
让我们从另一个行为开始:即使您将方法/变量声明为私有(private),同一类的另一个实例也可以访问它。没关系,我可以忍受。我称这些为类私有(private)而不是实例私有(private)。现在是问题部分:例如,在运行时我希望能够检查this类中的所有String变量是否不为null,如果它们为null,则应将其更改为字符串“NULL”。我可以使用反射遍历变量并获取它们的值。但是,如果我扩展我的类并添加私有(private)或什至protected变量,我的基类将无法访问它们。我必须先对变量进行setAccessible,然后才能使用它们。所以请向我解释为什么基类(父类(superc
我有一个简单的构建工具多项目问题...我有以下目录结构代表我的javasbt项目:/project1/project2/project3因此所有项目共享一个共同的直接父文件夹。项目2和3在项目1的build.sbt中引用如下:.dependsOn(project2,project3).aggregate(project2,project3)lazyvalproject2=ProjectRef(file("../project2"),"project2")lazyvalproject3=ProjectRef(file("../project3"),"project3")这样在projec
我有两个类(class)学生和导师。Tutor基本上是一个拥有facultyID的学生(TutorextendsStudent)。一旦他的契约(Contract)完成,他就回到了一个学生的身份。那么我能否以某种方式将他转换回他“以前”的学生名单? 最佳答案 在这里你真正想做的是使用compositionandnotinheritance.将所有对象保留为类型Student,然后临时分配一个TutorRole的行为因为Student的每个实例都需要它.有了这个设计,您的Student类将包含TutorRole类型的属性(成员变量)您可
子类对象如何引用父类?例如:publicclassParentClass{publicParentClass(){}//No-argconstructor.protectedStringstrField;privateintintField;privatebytebyteField;}publicclassChildClassextendsParentClass{//Itshouldhavetheparentfields.}这里当调用ChildClass构造函数时,创建了一个类型为ParentClass的对象,对吗?ChildClass从ParentClass对象继承了strField