我期待创建一套功能,其中全部某个接口的实现可以扩展使用。我的问题是,是否有办法使用代理或手动扩展接口的每个实现来执行此操作而不使用?扩展接口的所有实现的功能?
我最初的想法是看是否有可能使用泛型;使用参数化类型作为我的实施的超级类型...
public class NewFunctionality<T extends OldFunctionality> extends T {
//...
}
...但这是非法的。我不确切地说知道为什么这是非法的,但它确实是这样的(可能是因为本身可能是一个接口,而不是一个实现)。
有没有其他方法可以实现我想要做的?
编辑的东西一个例子,我可能想要做的是延长java.util.List
...用我的狡猾,非法语法:
public class FilterByType<T extends List> extends T {
public void retainAll(Class<?> c) {
//..
}
public void removeAll(Class<?> c) {
//..
}
}
在C#中,我会使用扩展方法来扩展FilterByType。我不知道java是否有这个。 –
Kristoffer
2009-11-13 07:17:08
当然,如果T是java.util.List之类的接口,那么必须实现而不是扩展,所以非法性实际上非常简单。 这也是你的问题FilterByType-example:T extends List假定T是一个接口,但FilterByType extendsT假定T是一个类。 – ShiDoiSi 2009-11-13 07:25:42
我相信,我的类型参数“扩展”(没有“实现”...)接口或类是非法的。 – 2009-11-13 07:50:55