2012-03-14 189 views
2

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

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

除了你不能paramaterize对象,我不知道如何设置这种事情。它甚至有可能吗?现在我只是使用泛型对象,但是这让我不得不检查每一种方法传入的类的类型和/或投射等等。如果我只能在界面上使用泛型,那么就会更加清洁。然后是具体的实施类。

+1

你为什么要用'Object '?你可以在你的界面设计中直接使用'void testMethod(T obj);'。 – 2012-03-14 06:47:57

回答

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>()

实例类