草庐IT

java - 从静态方法调用 super 方法

是否可以从子静态方法调用超静态方法?我的意思是,笼统地说,到目前为止,我有以下几点:publicclassBaseControllerextendsController{staticvoidinit(){//initstuff}}publicclassChildControllerextendsBaseController{staticvoidinit(){BaseController.loadState();//moreinitstuff}}它可以工作,但我想以一种通用的方式来做,比如调用super.loadState(),这似乎不起作用... 最佳答案

java - Java 中的继承——创建子类的对象也会调用父类(super class)的构造函数。为什么?

我有一个关于Java继承的问题。我有两个类A和B和类B,inheritsfromA:publicclassA{publicA(){System.out.println("Hi!");}}publicclassBextendsA{publicB(){System.out.println("Bye!");}publicstaticvoidmain(String[]args){Bb=newB();}}当我运行程序B时,输出是:Hi!Bye!Question:whytheconstructorofclassAisinvoked,whenIcreateandobjectofclassB?我知道B

java - Java 中的继承——创建子类的对象也会调用父类(super class)的构造函数。为什么?

我有一个关于Java继承的问题。我有两个类A和B和类B,inheritsfromA:publicclassA{publicA(){System.out.println("Hi!");}}publicclassBextendsA{publicB(){System.out.println("Bye!");}publicstaticvoidmain(String[]args){Bb=newB();}}当我运行程序B时,输出是:Hi!Bye!Question:whytheconstructorofclassAisinvoked,whenIcreateandobjectofclassB?我知道B

Java如何调用祖 parent 的方法?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Whyissuper.super.method();notallowedinJava?假设我有3个类A、B和C,每个类都扩展了前一个。如果B也实现myMethod,我如何从C.myMethod()调用A.myMethod()中的代码?classA{publicvoidmyMethod(){//somestuffforA}}classBextendsA{publicvoidmyMethod(){//somestuffforB//andthancallingAstuffsuper.myMethod();}}cla

Java如何调用祖 parent 的方法?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Whyissuper.super.method();notallowedinJava?假设我有3个类A、B和C,每个类都扩展了前一个。如果B也实现myMethod,我如何从C.myMethod()调用A.myMethod()中的代码?classA{publicvoidmyMethod(){//somestuffforA}}classBextendsA{publicvoidmyMethod(){//somestuffforB//andthancallingAstuffsuper.myMethod();}}cla

Java:在父类(super class)方法签名中返回子类

我正在解决一个问题,其中有多个Foo实现,伴随着几个FooBuilder。虽然Foo共享几个需要设置的公共(public)变量,但它们也有不同的变量,需要各自的FooBuilder来实现某些特定功能。为简洁起见,我想让FooBuilder的setter使用方法链接,例如:publicabstractclassFooBuilder{...publicFooBuildersetA(intA){this.A=A;returnthis;}...}和publicclassFooImplBuilderextendsFooBuilder{...publicFooImplBuildersetB(int

Java:在父类(super class)方法签名中返回子类

我正在解决一个问题,其中有多个Foo实现,伴随着几个FooBuilder。虽然Foo共享几个需要设置的公共(public)变量,但它们也有不同的变量,需要各自的FooBuilder来实现某些特定功能。为简洁起见,我想让FooBuilder的setter使用方法链接,例如:publicabstractclassFooBuilder{...publicFooBuildersetA(intA){this.A=A;returnthis;}...}和publicclassFooImplBuilderextendsFooBuilder{...publicFooImplBuildersetB(int

java - Collections.sort() 声明 : why <? super T> 而不是 <T>

为什么Collections.sort(List)有签名:publicstatic>voidsort(Listlist)而不是:publicstatic>voidsort(Listlist)我了解它们的用途相同;那么为什么框架开发者会使用第一个选项呢?或者这些声明真的不同吗? 最佳答案 您提议的签名可能适用于Java-8。然而,在以前的Java版本中,类型推断并不是那么聪明。假设您有List.请注意java.sql.Date延长java.util.Date实现Comparable.编译时Listlist=newArrayList()

java - Collections.sort() 声明 : why <? super T> 而不是 <T>

为什么Collections.sort(List)有签名:publicstatic>voidsort(Listlist)而不是:publicstatic>voidsort(Listlist)我了解它们的用途相同;那么为什么框架开发者会使用第一个选项呢?或者这些声明真的不同吗? 最佳答案 您提议的签名可能适用于Java-8。然而,在以前的Java版本中,类型推断并不是那么聪明。假设您有List.请注意java.sql.Date延长java.util.Date实现Comparable.编译时Listlist=newArrayList()

java - 在Java中_not_调用父类(super class)构造函数的任何方法?

如果我有课:classA{publicA(){}}还有一个classBextendsA{publicB(){}}有没有办法让B.B()不调用A.A()? 最佳答案 在Java中绝对没有办法做到这一点;它会破坏语言规范。JLS12Execution/12.5CreationofNewClassInstancesJustbeforeareferencetothenewlycreatedobjectisreturnedastheresult,theindicatedconstructorisprocessedtoinitializethe