草庐IT

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.lang.VerifyError : (class: ea/Individual, method: <init> signature: (I)V) 构造函数必须调用 super() 或 this()

我在这个类中没有发现任何错误,但Netbeans在那个类中不断显示红色符号。类是/**Tochangethistemplate,chooseTools|Templates*andopenthetemplateintheeditor.*/packageea;/****@authorriyad*/importjava.util.Random;importjava.util.BitSet;publicclassIndividual{BitSetvariable;doublex;doublefitness;doublesharedFitness;finalintSIZE;Randomgener

java - 对 super() 的调用必须是构造函数主体中的第一条语句

我正在编写一个LoginRequest类的构造函数,它扩展了一个名为JsobObjectRequest的类(来自Android中的Volley框架,但这与问题完全无关)使用此代码:publicLoginRequest(Stringusername,Stringpassword,Response.ListenerresponseListener,Response.ErrorListenererrorListener){BooleanhasCredentials=(username!=null&&password!=null);intmethod=hasCredentials?Method

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

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

java - 为什么在覆盖 finalize() 方法时首选调用 super.finalize()?

我收到SonarQube错误:“强烈建议在此方法实现结束时调用super.finalize(),以防父实现也必须释放一些系统资源。”但我发现Object类没有实现finalize方法。protectedvoidfinalize()throwsThrowable{}那么为什么需要调用super.finalize()呢? 最佳答案 这不是必须的,它是应该遵循的finalizer写成语。如果在未来的任何时候,您重构了您的代码并且您的类扩展了一些可能具有finalize方法的其他类,这种做法将防止出现奇怪的错误。成语是try{//Dowha

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

java - 用 Scala 继承 'object'

我有这段Java代码:classSuper{publicstaticvoidfoo(){bar();}publicstaticvoidbar(){out.println("BAR");}publicstaticvoidmain(String[]args){foo();}}classSubextendsSuper{publicstaticvoidbar(){out.println("bar");}}而且我想看看它在Scala中的作用,但似乎找不到如何编写等效项。这是我的:objectSuper{deffoo(){bar()}defbar(){println("BAR")}defmain(

java - 父类(super class)和子类都有自己的接口(interface)

以下可以吗?(请记住,我没有编写类的主体,也没有编写接口(interface);-))abstractclassSuperClassimplementsSuperInterfaceclassSubClassextendsSuperClassimplementsSubInterface或者这通常被认为是不好的做法?让我感到奇怪的是,以下内容不起作用:ListmyList;...for(SuperInterfacesi:myList){...} 最佳答案 不好也不坏。SubClass在这里实现了SuperInterface和SubInt