当构造函数没有显式调用父类(superclass)构造函数(或this())时,编译器会插入super()。如果从类文件中删除此调用(编译后)会发生什么情况? 最佳答案 我自己试过了。classTest{publicTest(){System.out.println("HelloWorld");}publicstaticvoidmain(String[]args){newTest()}}我编译并删除了invokespecialjava/lang/Object/()V使用类文件编辑器从构造函数中获取。JVM似乎拒绝加载该类:Excep
this和super是关键字,不是吗?那么我如何使用它们以与方法相同的方式将参数传递给构造函数?简而言之,两者如何表现出如此不同的行为?? 最佳答案 this和super都是关键字是正确的。Javalanguagespecification明确定义他们必须如何表现。简短的回答是这些关键字的行为特殊,因为规范规定它们必须这样做。根据规范this可以使用primaryexpression(仅在某些地方)或在explicitconstructorinvocation.Thekeywordthismaybeusedonlyinthebody
我有classA{intvar;publicA(intx){var=x;}}classBextendsA{intvar2;publicB(intx,inty){super(...);var2=y;x=f(y);}}对于子类B,我需要计算在A的构造函数中使用的值x。如果我可以自由地将super移动到我的x=f(y)然后我可以将结果传递给A(super)的构造函数。但是super必须是B的构造函数中的第一行。有什么方法可以在第一次用正确的值初始化A吗?如果A.var是最终的并且我无法在构造后返回并更改它怎么办?当然,我可以放置super(f(y)),但我可以想象这会变得困难的情况。
您好,我想知道是否有解决我的问题的简单方法,我有一个ArrayList:ArrayListanimalList=newArrayList();/*IaddsomeobjectsfromsubclassesofAnimal*/animalList.add(newReptile());animalList.add(newBird());animalList.add(newAmphibian());它们都实现了一个方法move()-当调用move()时Bird会飞。我知道我可以使用这个访问父类(superclass)的通用方法和属性publicvoidfeed(IntegeranimalIn
所以我在阅读泛型方法时感到很困惑。先说一下这里的问题:在这个例子中:假设我需要一个适用于任何类型T的selectionSort版本,方法是使用调用者提供的外部可比较对象。第一次尝试:publicstaticvoidselectionSort(T[]arr,ComparatormyComparator){....}假设我有:定义车辆类别创建了实现Comparator的VehicleComparator,同时按价格比较车辆。创建卡车扩展车辆实例化卡车[]arr;车辆比较器myComparator现在,我做:selectionSort(arr,myComparator);它不会工作,因为my
有没有办法让toString()包含超class的私有(private)字段?我尝试添加super.toString(),但是没用。请看下面的代码员工.javapackagetest;publicclassEmployee{privateStringname;privateintid;privatedoublesalary;publicEmployee(Stringname,intid,doublesalary){super();this.name=name;this.id=id;this.salary=salary;}publicdoublegetSalary(){returnsal
Java网站教程中的这个例子page.两个接口(interface)定义了相同的默认方法startEngine()。类FlyingCar实现了这两个接口(interface),并且由于明显的冲突必须重写startEngine()。publicinterfaceOperateCar{//...defaultpublicintstartEngine(EncryptedKeykey){//Implementation}}publicinterfaceFlyCar{//...defaultpublicintstartEngine(EncryptedKeykey){//Implementatio
我了解Java平台模块系统(JPMS)对大型应用程序的好处,但是否有任何理由将小型库或应用程序制作成(单个)模块?如果是这样,是ModularJarFiles实现此目的的最佳方法,还是首选常规方法?展望future,模块化v.classpath程序是否会对性能产生影响? 最佳答案 直接的性能影响包括以下内容:模块化应用程序可以选择使用jlink这样可分发运行时的大小就减小了:它只使用你需要的模块。因此,如果您不需要Swing、Corba等,它不会驻留在磁盘上。(更多信息here)。模块化应用程序使用模块图进行类加载;该算法比类路径的
我从存储库中获取项目,并根据设置说明尝试在eclipse中创建一个项目,并将位置指向我从存储库下载代码的位置。然后当我点击完成时,我得到了错误说明“一个或多个约束尚未得到满足。无法安装项目facetJava1.6。此项目facet的某些版本已安装。无法安装项目方面动态Web模块3.0。该项目方面的某些版本已经安装。”如何解决这个问题? 最佳答案 我解决了这个问题。解决方案是我必须转到项目位置的“.settings”文件夹并删除“org.eclipse.wst.common.project.facet.core.xml”文件并再次重新
我有一个父类(superclass),我想在我的子类中使用这个父类(superclass)中的一个变量。这怎么可能? 最佳答案 只需将字段设置为protected,这意味着它应该对所有派生类可见。 关于java-如何使用从父类(superclass)到子类的变量?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/16992452/