2
我想达到的效果是通过下面的例子描述:是否有可能创建编译时检查参数化泛型类型?
public <T extends Collection> T<String> mainSolution(T<String> words)
{
return Collections2.transform(words, w -> w.length() + w.toUpperCase());
}
我想达到的效果是通过下面的例子描述:是否有可能创建编译时检查参数化泛型类型?
public <T extends Collection> T<String> mainSolution(T<String> words)
{
return Collections2.transform(words, w -> w.length() + w.toUpperCase());
}
我想你的意思是,你要的String
个Collection
(或子类)传递给它做了一个方法转化并在转化后返回收集。由此产生的集合与传入的集合类型相同。
如果是这种情况,那么您几乎就是在那里,只是偶然发现了一些语法。
下面是代码:
public <T extends Collection<String>> T mainSolutions(T words)
{
return (T) Collections2.transform(words, w -> w.length() + w.toUpperCase());
}
<...>
你有泛型类型参数,然后按照T
是方法的返回类型,显然它使用相同类型T
的1个参数的尖括号内。
不,Java没有像这样更高级的泛型。你不能用Java类型系统来表达它。 – 2014-09-25 21:52:51
我想你的意思是'>',而不是原始类型''。 –
gparyani
2014-09-25 22:21:39
它有什么不同吗?由于不支持更高版本的泛型,因此类型参数将被擦除。 – 2014-09-25 22:34:07