繁体   English   中英

用Java定义具有相同名称但类型参数数量不同的通用接口

[英]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参数。

Func1Func0的实例仍然是Func实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM