哈喽大家好!小米今天要和大家聊一个有趣的话题,就是关于面试中经常被问到的一个问题:"this"与"super"之间有什么区别?对于很多即将踏入职场的小伙伴们来说,这可是一个需要了解透彻的问题哦!废话不多说,我们马上进入正题吧!this是什么?首先,我们来了解一下this是什么。在面向对象编程中,this是一个关键字,代表了当前对象的引用。当我们调用一个对象的方法或访问其属性时,可以使用this关键字来指向当前正在操作的对象。这样一来,我们就能够在方法内部访问和修改当前对象的属性,或者调用其他方法。比如说,我们有一个类叫做"Person",其中有一个方法"sayHello":在这个例子中,thi
我经常看到人们在没有显式扩展任何内容的类中显式调用super()。publicclassFoo{publicFoo(){super();//dootherconstructorstuff}}现在我知道这是完全合法的,如果省略,编译器会添加调用,但我仍然认为这是不好的做法。每当我看到这个时,我想知道程序员是否对继承有一些误解以及所有类都隐式扩展Object这一事实。我是否应该将此添加到我们的编码标准/最佳实践中?当我看到团队中的其他开发人员这样做时,我是否应该召集他们这样做?这是我的个人问题,但我不知道我是否只是挑剔。 最佳答案 虽然
我有以下代码,但我对所有泛型感到困惑。publicstaticListbackwards(Listinput){Listoutput=newArrayList();returnoutput;}我的理解是我有一个名为backwards的公共(public)方法,它创建一个实现List接口(interface)并返回数组列表的数组列表。我的问题是我实际上在用以下部分对编译器说什么......staticListbackwards(Listinput) 最佳答案 你是在对编译器说:“我为这个方法声明了一个任意类型T,对于方法的每次调用它可
有时候,你想测试一个类方法,你想对父类(superclass)方法的调用做一个期望。我没有找到使用easymock或jmock在java中实现这种期望的方法(我认为这是不可能的)。有一个(相对)干净的解决方案,使用父类(superclass)方法逻辑创建委托(delegate),然后对其设置期望,但我不知道为什么以及何时使用该解决方案,有什么想法/示例吗?谢谢 最佳答案 好吧,如果你愿意,你可以。不知道大家是否熟悉JMockit,去看看吧。目前的版本是0.999.17,同时,我们来看看吧……假设有以下类层次结构:publicclas
我正在尝试将一些实体发送到基于ejb的Web服务。这是我的Web服务客户端代码:packageejbserviceclient;importjava.net.MalformedURLException;importjava.net.URL;importjavax.xml.bind.JAXBContext;importjavax.xml.bind.JAXBException;importjavax.xml.namespace.QName;importjavax.xml.ws.Service;publicclassEjbServiceClient{publicstaticvoidmain(
super.paintComponent(g)做了什么(特别是当我们将它放在paintComponent()方法中时)?我很惊讶之前没有看到有人在SO中问过这个问题。我翻出我关于JavaGraphics的学校笔记,它在这行代码中唯一提到的是“不要删除”。然而,这几周我一直在练习和尝试使用JavapaintComponent()方法。到目前为止,我还没有将该行包含到我的代码中,而且一切似乎都运行良好(到目前为止)。所以..问题:它有什么作用?我们什么时候需要使用它?把它写在paintComponent()里给我们带来什么好处? 最佳答案
通用实体,父类(superclass):@MappedSuperclasspublicabstractclassGenericEntity{privateIntegerid;publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.id=id;}}POJO:@Entity@Table(name="POJO_ONE")@SequenceGenerator(name="HB_SEQ_POJO_ONE",sequenceName="SEQ_POJO_ONE",allocationSize=1)publicclassPojoO
Compilingimportjava.util.concurrent.Callable;classIdeone{Callablex=super::clone;}使用OracleJDK提供:Main.java:6:error:incompatibletypes:invalidmethodreferenceCallablex=super::clone;^clone()hasprotectedaccessinObject这毫无意义,因为类应该能够访问其父类的protected方法。此表达式在Eclipse的编译器中运行良好。此外,()->super.clone()编译得很好....这是一个
我基本上有一个问题,为什么以下不起作用。我有一个抽象类:publicabstractclassAbstrct{}然后,我定义了一个类,该类使用了一个公共(public)内部类,我想将其用于泛型参数,如下所示:publicclassOuterextendsAbstrct{publicclassInner{}}由于我仍在学习Java,所以我对它为什么不起作用更感兴趣。与其说是如何让它发挥作用,不如说是我对此也很感兴趣。 最佳答案 Inner不在Outer类声明的范围内。在extends子句中使用时,它不是已知的类型名称。使用合格的引用:
以下用Java-9编写的代码正在运行,在运行时中出现了一个非常奇怪和有趣的异常:Exceptioninthread"main"java.lang.NoSuchFieldError:superatA$C.test(A.java:15)atA.main(A.java:5)代码:publicclassA{publicstaticvoidmain(String[]args){newC().test();}interfaceB{privatevoidtest(){}}staticclassCimplementsB{voidtest(){B.super.test();}}}我想知道:它是这样设计的