草庐IT

java - 将父类(super class)对象作为参数传递给子类构造函数(java)

我已经做了一些搜索,但我要么没有问正确的问题,要么没有记错。无论如何,在Java中,我想知道是否可以将父类(superclass)对象作为参数传递给子类,以及使该对象的数据可用于该类的父类(superclass)的最有效方法是什么。代码示例:publicclasssuperclass{Stringmyparm1;StringmyParm2;intmyParmN;publicsuperclass(Stringp1,Stringp2,intpn){this.myparm1=p1;this.myparm2=p2;this.myParmN=pn;}//othermethodshere}publ

java - MockClassLoader 无法访问 jdk/internal/reflect 父类(super class) jdk.internal.reflect.MagicAccessorImpl

我正在将一个项目迁移到Java9,在我切换到新的Java版本后测试开始失败,似乎PowerMock正在尝试访问它无法访问的一些类。Testsrun:1,Failures:0,Errors:1,Skipped:0,Timeelapsed:0.973secma​​ven-surefire-pluginmaven-surefire-plugin2.19.1**/*Test.java**/*Test.groovy**/*Spec.*always--add-modulesjava.xml.bind--add-modulesjava.activation--add-opens=java.base/

java - @Provides 和@Named 不适用于父类(super class)型声明的变量

我目前正在探索Guice功能并遇到了一个奇怪的行为-当我将变量声明为@Inject@Named("dragon")Dragondragon2;注入(inject)按预期工作,但是当我想将dragon2声明为接口(interface)(它实现Creature)时,我。e.@Inject@Named("dragon")Creaturedragon2;我得到一个错误未绑定(bind)带有@com.google.inject.name.Named(value=dragon)注释的warlock.rincewind.creatures.Creature的实现。这是我的提供者方法:@Named("

java - 我应该创建静态方法还是抽象父类(super class)

我正在尝试重构一个项目,其中有相同的方法分布在各个类中。为了减少代码重复,我应该将公共(public)代码移到抽象父类(superclass)中,还是应该将其放在实用程序类的静态方法中?编辑有些方法适用于我认为可以静态化的通用内容。虽然还有其他引用类的属性,但在这种情况下,我认为将其作为抽象父类(superclass)更有意义。 最佳答案 好吧,我遵循一个规则:不要使用基类来删除代码重复,使用实用类。对于继承,问自己一个问题:是否存在Is-A关系?另一个在大多数情况下都是正确的规则是:优先使用组合而不是继承使用静态实用程序类不是真正

尝试使用父类方法时Java调用子类方法

如果我有两个类,A和B,publicclassA{publicinttest(){return1;}}publicclassBextendsA{publicinttest(){return2;}}如果我这样做:Aa1=newB(),那么a1.test()会根据需要返回2而不是1。这只是Java的一个怪癖,还是有某种原因导致这种行为? 最佳答案 这叫做polymorphism.在运行时,将根据a1的“真实”类型调用正确的方法,在本例中为B。正如维基百科所说:Theprimaryusageofpolymorphisminindustry

java - 我有一个带有 @ExceptionHandler 的父类和一个带有自己版本的子类。我收到一个不明确的方法错误

父级:@ExceptionHandler(NoUserException.class)protectedModelAndViewhandleException(NoUserExceptione){Mapmodel=newHashMap();model.put(ModelKeys.HOST_KEY,"message");returnnewModelAndView("noAccess",model);}child:@ExceptionHandler(NoUserException.class)protectedvoidhandleException(NoUserExceptione,Htt

java - 如果父类/接口(interface)发生变化,类的字节码是否会发生变化?

我正在尝试确定是否需要重新编译构建链中的某些jar,如果我有以下结构,jar1在其源更改时编译,jar2在其源更改或jar时编译1已重新编译。jar1:publicclassFoo/*impl*/jar2:publicclassBarextendsFoo/*impl*/假设两个类之间的契约没有改变,即。添加抽象方法或将方法添加到接口(interface)等。我需要重新编译jar2吗?IE。如果对Foo中的私有(private)方法进行了一些更改,是否需要重新编译Bar?我尝试通过比较两个类的字节码来测试这个,在一个类中更改了一堆之后,正如预期的那样,它没有改变。然而,我的同事坚持认为他

java - 内存如何分配给 lambda |它是如何被非父类(super class)引用变量引用的

我正在创建功能接口(interface)的实现,下面是我的代码:Consumerconsumer=newConsumer(){@Overridepublicvoidaccept(Integert){System.out.println(t);}};根据JavaDocumentation(javadoc)AvariableofaclasstypeTcanholdanullreferenceorareferencetoaninstanceofclassTorofanyclassthatisasubclassofT.在上面的代码中,创建了匿名对象,它是Consumer的子类,可以通过引用变量

java - 为什么Java中可以将父类(super class)初始化为子类?

简而言之,这是如何以及为什么可能的:Objectobj=newMyClass();Object是所有对象的父类(superclass),因此MyClass是Object的子类。一般来说,在Java中,为什么可以在父类中使用子类的构造函数?我明白它怎么可能反过来,因为子类拥有父类的所有变量/方法,所以当你初始化它们时,你只是在初始化父构造函数中指定的变量,这些变量按定义存在于child。问题是,当你反过来时,它不一定是真的。子项可以拥有父项没有的变量,那么当父项一开始甚至没有变量时,如何将子项构造函数与父项一起使用?这个特性在开发中有什么用?我想如果你想要一个B类的实例,你会把它声明为B

java - 为什么这个泛型不能识别它的父类(super class)边界(Java)?

我有一个对象实例系统,其中包含对定义对象的引用。每个继承树都有一个顶级类。实例对象具有对相应定义类的泛型引用。在getter中使用泛型,顶级对象的子类无需转换即可获得正确的类型定义。但是,再次被子类化的抽象子类不能:classDef{}abstractclassAnimal{Ddef;DgetDef(){returndef;}}classCatDefextendsDef{}classCatextendsAnimal{}abstractclassBearDefextendsDef{}abstractclassBearextendsAnimal{}classBlackBearDefexte