草庐IT

java - 从父类返回子类

我有一个构建器类,它从大多数方法返回自身以允许菊花链。为了使它与子类一起工作,我希望父方法返回子类的实例,以便子方法可以链接到最后。publicclassBaseBuilder>{publicTbuildSomething(){doSomeWork();/*OPTION#1:*/returnthis;//"Typemismatch:cannotconvertfromBaseBuildertoT"/*OPTION#2:*/returnT.this;//"Typemismatch:cannotconvertfromBaseBuildertoT"/*OPTION#3:*/return(T)t

Java:父类可以静态获取子类的类名吗?

关于Java,我想静态知道当前类的类名。A是B的父类。我想在A(父类)中有一个静态字符串,其中包含当前类的类名,但是当在B(子类)中引用这个静态字符串时,它应该包含B的类名。这可能吗?例子:publicclassParent{protectedstaticStringMY_CLASS_NAME=???...}publicclassChildextendsParent{publicvoidtestMethod(){if(MY_CLASS_NAME.equals(getClass().getName())){System.out.println("We'reequal!");}}}

java - 方法不重写或实现父类(super class)型的方法

我正在使用继承和多态性创建一个模拟员工数据库。尝试覆盖父类(superclass)方法时遇到以下错误。HourlyEmployeeisnotabstractanddoesnotoverrideabstractmethodresetWeek()inEmployeepublicclassHourlyEmployeeextendsEmployee^HourlyEmployee.java:43:error:methoddoesnotoverrideorimplementamethodfromasupertype@Override^HourlyEmployee.java:54:error:met

java - 父类(super class)方法和接口(interface)默认方法冲突解决

考虑下面的例子,publicclassTestingextendsSupClsimplementsIntf{publicstaticvoidmain(String[]args){newTesting().test();}}classSupCls{publicvoidtest(){System.out.println("FromSupCls");}}interfaceIntf{publicdefaultvoidtest(){System.out.println("FromIntf");}}如您所见,SupCls类和Intf接口(interface)之间没有任何联系。但两者都定义一种通用方

java - 从 Java 中的子类构造函数调用父类(super class)

我正在尝试创建一个将字段作为参数的构造函数,然后将其放入存储在父类(superclass)中的字段中。这是我正在使用的代码publiccrisps(Stringflavour,intquantity){this.flavour=super.getFlavour();this.quantity=quantity;}在父类(superclass)中我用初始化了这个字段privateStringflavour;我有一个访问器方法publicStringgetFlavour(){returnflavour;}我收到错误消息“flavour在父类(superclass)中具有私有(private

java - 为什么在尝试使用内部类的方法引用调用父类(super class)的 protected 方法时会出现 BootstrapMethodError?

在Java8中,在包a中有一个父类(superclass)Super和在包b中有一个子类Sub>,他有一个内部类SubInner://Super.javapackagea;publicabstractclassSuper{privatelongvalue;protectedfinalvoidsetValue(longvalue){this.value=value;}}//Sub.javapackageb;publicclassSubextendsSuper{publicvoidfoo(){newSubInner().foo();}privateclassSubInner{voidfoo

Java 对象父类(super class)

我有一个奇怪的Java问题:据我们所知:所有Java类都扩展java.lang.Object所有Java类都不能扩展自身然后,java.lang.Object必须扩展java.lang.Object,它本身就是它自己,因此,这应该是不可能的。Java中Object是如何实现的? 最佳答案 Object是第一条规则的异常(exception),它没有父类(superclass)。来自JLS38.1.4:TheextendsclausemustnotappearinthedefinitionoftheclassObject,becaus

java - 将父类(super class)的对象转换为子类——向下转型

我知道转换实际上只能从子类到父类(superclass)(向上转换)完成,但这个例子说明了我想做什么。ClassSuper{}ClassSubextendsSuper{}Supersuper=newSuper();Subsub=(Sub)super;我相信这被称为“向下”类型转换,这是不允许的......给定Super类型的对象,创建Sub类型对象的最佳方法是什么。编辑:这就是问题-将Animal转换为Cat的最佳方法是什么。答案?从基本类型动物开始并将属性复制到猫。添加毛皮和尾部等。基本上是一个复制构造函数。这是正确答案(或好的答案)吗?另一个编辑:我认为我的问题很明确,但可能过于笼

java - 将对象从父类类型转换为子类

我对Java语言的类型转换有一个误解。问题是ClassCastException。例如,在这段代码中,假设Animal是Dog类的父类,Animalanimal=newAnimal();Dogdog=(Dog)animal;执行后抛出ClassCastException。然而,在研究android包时,我发现了一个关于类型转换的例子,考虑到那个java例子,它应该抛出一个ClassCastException。EditTexteditText=(EditText)findViewById(R.id.edit_message);在这段代码中,findViewById方法返回一个View类对

java - 抽象基类与作为父类(super class)型的具体类

在阅读了最优秀的书籍“HeadFirstDesignPatterns”之后,我开始向我的同事们宣传模式和设计原则的好处。在赞美我最喜欢的模式——策略模式——的优点时,我被问到一个让我停顿的问题。策略当然使用继承和组合,当一位同事问“为什么使用抽象基类而不是具体类?”时,我正在长篇大论地谈论“针对接口(interface)(或父类(superclass)型)而不是实现编程”。.我只能想出“好吧,你强制你的子类实现抽象方法并阻止它们实例化ABC”。但老实说,这个问题让我措手不及。这些是在层次结构顶部使用抽象基类而不是具体类的唯一好处吗? 最佳答案