首页 > 解决方案 > 实现接口并使用类对象而不是接口对象

问题描述

我有接口TestInterface和类TestClass

TestClass现在实现了这个接口。但是,我想将一个TestClass对象作为方法的参数传递。

但是,这里向我显示了一个错误。

这是为什么?

我想我可以在可以使用接口对象的任何地方使用实现接口的对象。

如何更改程序?

public interface TestInterface {
    int v=0;
    public void method(TestInterface t);
}
public class TestClass implements TestInterface{
    int v = 5;
    public void method(TestClass t) {
        v=10;   
    }
}

标签: java

解决方案


您不能这样做,因为这违反了接口的约定:该方法应该接受 的任何实现TestInterface,而不是具体的TestClass. 相反,您可以在接口中使用类型参数来限制参数类型。

public interface TestInterface<T extends TestInterface<T>> {
    int v=0;
    public void method(T t);
}
public class TestClass implements TestInterface<TestClass>{
    int v = 5;
    public void method(TestClass t) {
        v=10;   
    }
}

推荐阅读