[英]Define generic interfaces with same name but a different number of type parameters in Java
在Java(1.7)中,是否可以用相同的名称定义不同类型的参数的多个接口? 我本质上在寻找的是本质上类似于.NET的Func<TResult>
, Func<T1, TResult>
, Func<T1, T2, TResult>
, Func<T..., TResult>
委托类型的精神。 非常像可选的类型参数 。
Java语言中是否存在这样的功能,还是仅限于创建名称不同的接口,例如Func0<TResult>
, Func1<T1, TResult>
, Func2<T1, T2, TResult>
?
泛型类型是编译时的功能,这意味着在运行时,您的Func
类将都是同一类。 即使您单独编译它们并将它们添加到类路径中,也只会加载它们。 这意味着它们必须具有不同的完整类名才能在运行时使用。
您不能有可变数量的泛型类型参数,但是可以通过使用Void
类型来“强制”忽略该参数:
interface Func<T1, T2, IReault> {...}
interface Func1<T1, IResult> extends Func<T1, Void, IResult> {...}
interface Func0<IResult> extends Func<Void, Void, IResult> {...}
Void
无法实例化,因此您可以传递/返回/使用的唯一有效Void
引用为null
,从而强制在实现和调用Void
有效地忽略Void
参数。
Func1
和Func0
的实例仍然是Func
实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.