Tag: 覆盖

如何修复“构造函数调用可覆盖的方法”

我有以下设置,它给我一条消息,指出“构造函数调用Overridable方法”。 我知道这种情况正在发生,但我的问题是如何修复它以便代码仍然有效并且消息消失了。 public interface Foo{ void doFoo(); } public class FooImpl implements Foo{ @Override{ public void doFoo(){ //.. Do important code } } public class Bar{ private FooImpl fi; public Bar(){ fi = new FooImpl(); fi.doFoo(); // The message complains about this line } } 谢谢!

覆盖实例化的Java对象中的方法

我想覆盖一个由我无法控制的工厂交给我的对象中的方法。 我的具体问题是我想覆盖Socket对象的getInputStream和getOutputStream来执行有线记录 。 一般问题如下: public class Foo { public Bar doBar() { // Some activity } } 在哪里我想采用一个实例化的Foo并用我自己的doBar替换doBar ,如下所示: Bar doBar() { // My own activity return original.doBar(); } 对于Socket,我将返回一个InputStream和OutputStream ,它们通过记录来拦截数据。

C#中接口的Java 1.6 @Override等效

这个问题给出了Java的@Override在方法上具有override关键字的C#等价物的答案。 但是,从Java 1.6开始,@ Override注释也可以应用于接口。 实际使用的是,在Java中,当一个类声称它实现了一个接口方法时(例如,如果删除了接口方法),就会遇到编译错误。 C#中有相同的function吗? 一些代码示例: Java的: public interface A { public void foo(); // public void bar(); // Removed method. } public class B implements A { @Override public void foo(); @Override public void bar(); // Compile error } C#: public interface IA { void Foo(); // void Bar(); // Removed method. } […]

Java Eclipse @Override错误

我正在编写一个Java类,它正在实现一个名为Command的接口,它包含方法isValid()和run() ,如下所示: public class DailyEnergy implements Command { @Override public boolean isValid(String command) { return false; } @Override public void run(String command) throws Exception { } } 这是Command.java文件: public interface Command { public boolean isValid(String command); public void run(String command) throws Exception; } 在这个类中,我正在实现超类方法isValid()和run() ,我想添加@Override注释,但是Eclipse给出了一个错误,说“方法必须覆盖超类方法”。 即使我拿出方法并使用Eclipse自动导入它们,如果我添加注释,我也会收到错误。 如果有人能够解释为什么我不能使用@Override注释,那将非常感激。

Java:如何覆盖这种通用方法?

public List save(Iterable entities) { //… } 如果我使用以下方法来覆盖 @Override public List save(Iterable structures) { List result = new ArrayList(); //… return result; } 我收到以下错误: method does not override or implement a method from a supertype name clash: save(Iterable) in MyTypeRepositoryImpl and save(Iterable) in SimpleJpaRepository have the same erasure, yet neither overrides the other where S,T […]

确定方法是否在运行时覆盖另一个方法

我想知道是否有任何方法可以确定给定的java.lang.Method对象所代表的方法是否会覆盖另一个java.lang.Method对象所代表的另一个方法? 我正在研究Stronlgy类型的javascript ,我需要能够知道一个方法是否覆盖了另一个方法,以便能够将它们重命名为更短的名称。 在这种情况下,我正在谈论覆盖的扩展定义,由@Override注释支持,其中包括接口和抽象类方法的实现。 我对任何涉及直接reflection或使用任何已经执行此操作的库的解决方案感到满意。

inheritance,方法签名,方法重写和throws子句

我的Parent课是: import java.io.IOException; public class Parent { int x = 0; public int getX() throws IOException{ if(x<=0){ throw new IOException(); } return x; } } 我extend这个类来编写一个子类Child : public class Child1 extends Parent{ public int getX(){ return x+10; } } 请注意,在覆盖 Child类中的getX方法时,我已从方法定义中删除了throws子句。现在,它会导致编译器出现exception行为,这是预期的: new Parent().getX() ; 如果没有将其包含在try-catch块中,则无法编译。 new Child().getX() ; 编译时不将其封闭在try-catch块中。 但是下面的代码行需要try-catch块。 Parent p = new Child(); […]

在对象创建期间的java覆盖

在下面的java代码中创建了一个JButton,但同时它的一个方法被覆盖。 问题:创建对象时是否有以这种方式覆盖的名称? 代码: JButton myButton; myButton = new JButton (“ok”){ @Override public void setText(String text) { super.setText(text +”, delete”); } jbutton的标签现在是“ok,delete”

如何覆盖java中的方法然后调用超类方法

我试图覆盖我的java子类中的超类中的方法,然后从超类中调用overriden方法。 这是正确的方法吗? 我想要覆盖的超类中的方法叫做describe() public static void describe() { Item.describe(); }

覆盖Java中的generics集合时出错

当我尝试覆盖一个采用List ,我得到以下编译错误 。 此行有多个标记: – 子类型的方法getname(List)必须覆盖或实现超类型方法 – 名称冲突:类型为child的方法getname(List)与parent类型的getname(List)具有相同的擦除,但不会覆盖它 我的印象是,由于擦除 ,采用List的方法和采用List的子类方法将被视为被覆盖 ,因为擦除后两种方法的签名都相同。 以下是涉及擦除的 方法签名的定义。 我不明白为什么会出现这个错误,究竟是什么意思。 我的代码如下: class parent { public void getname(List num) { System.out.printf(“parent class: %s”,num); } } class child extends parent { @Override // here is the compile error public void getname(List num) { System.out.printf(“child class: %s”,num); } }