【问题标题】:Generic Types in Interface and Non Generic in Implementation接口中的泛型类型和实现中的非泛型
【发布时间】:2012-03-14 06:42:57
【问题描述】:

我不确定如何正确命名这个问题,所以如果它更适合编辑,请这样做。我的问题与在接口中使用泛型类型然后强制实现为特定类型有关。像这样的:

public interface Test<T> {
    void testMethod(Object<T> obj);
}

然后在此接口的实现中不允许使用泛型对象,而是以某种方式设置类型。

public class TestImpl implements Test<TestObject1> {
    @Override
    public void testMethod(TestObject1 obj) {
        //Do something
    }
}

public class Test2Impl implements Test<TestObject2> {
    @Override
    public void testMethod(TestObject2 obj) {
        //Do something
    }
}

除了你不能参数化对象,我不知道如何设置这种东西。甚至可能吗?现在我只使用泛型对象,但这让我不得不检查每个方法和/或强制转换等传入的类的类型。如果我可以在接口上使用泛型和然后是具体的实现类。

【问题讨论】:

  • 你为什么使用Object&lt;T&gt;?你可以在你的界面设计中直接使用void testMethod(T obj);

标签: java generics interface


【解决方案1】:
public interface Test<T> {
    void testMethod(T obj);
}

你很亲密。

如果testMethod 特定于传入的类,那么您可以按照您拥有它们的方式编写类,或者...

public class TestImpl<T> implements Test<T> {
    @Override
    public void testMethod(T obj) {
        //Do something
    }
}

现在您可以通过new TestImpl&lt;TestObject&gt;()new TestImpl&lt;TestObject2&gt;() 实例化您的类

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多