接口中的通用类型和实现中的非通用类型

时间:2012-03-14 06:42:58

标签: java generics interface

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

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
    }
}

除非你不能使对象参数化,否则我不确定如何设置这类东西。它甚至可能吗?现在我只使用通用对象,但这让我不得不检查每个方法和/或转换等传入的类的类型。如果我可以在接口上使用泛型,那将会更加清晰。然后是关于实施的具体课程。

1 个答案:

答案 0 :(得分:4)

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<TestObject>()new TestImpl<TestObject2>()

来实例化您的课程