Java 泛型是否可以用值而不是类型进行参数化?
假设我想定义结构相似但参数不同的类型,这些类型可以是整数,也可以是其他参数。
在Java中,是否可以定义一个由整数甚至任意对象参数化的类族?
请考虑以下伪代码(不会编译):
/**
* String of a certain length n and a method to reduce to length n-1
*/
public class StringN<int n> {
private String str;
public StringN( String str) {
if(str.length() != n) {
throw new IllegalArgumentException("string is not of required length!");
}
this.str = str;
}
public StringN<n-1> reduce() {
return new StringN<n-1>(s.substring(0, s.length() - 1));
}
@Override
public String toString() {
return str;
}
}
在我看来,其他更自然的例子是数学中的张量积,所以如果想要将空间R^n定义为Java类,或者在函数式编程中定义空间的“arity”,那么在哪里放置参数“n”。那么如何定义一系列具有不同 arity 的类,由 n 参数化呢?Function<>
如果这在Java中是不可能的,那么这个概念是否存在于其他更函数式的语言中,它的正确名称是什么?(比如“参数化类”?
编辑:作为对评论的反应,最后一部分只是为了知道这样一个概念的通用名称,而不是绕道到其他语言。