java - 参数化方法内的变量范围 - java 泛型

标签 java generics collections foreach scope

为什么在这个 foreach 循环中,elem 不被识别为路径(它确实是路径),而我只能在其上调用对象方法?

public class TypeOption<Path> implements Option<Path> {

    @Override
    public void apply(String arg, Collection<Path> c) {
        for (Path elem : c) {
            if (Files.isExecutable(elem)) c.remove(elem);
        }
    }
}

这一行

if (Files.isExecutable(elem)) c.remove(elem);

它说是造成麻烦的

The method isExecutable(java.nio.file.Path) in the type Files is not applicable for the arguments (Path)

最佳答案

因为Path此处是一个类型参数 - 您已经声明了一个泛型类型,其中 Path作为类型参数。我怀疑你*想要:

public class TypeOption implements Option<Path> {

此时,Path引用名为 Path 的现有类型 ,并用于 Option<T> 的类型参数 (或者 Option 的任何类型参数)。

关于java - 参数化方法内的变量范围 - java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27647271/

相关文章:

java - 同步块(synchronized block)中的 HashMap 与 Collections.synchronizedMap() 之间有什么区别?

java - 多 J2EE 应用程序系统中具有惰性字段的实体的最佳实践

javascript - 记录列表的 TypeScript 数据类型

java - 2d ArrayLists - 为什么将一个对象添加到一个子列表会将同一对象添加到所有子列表?

java - 运行时已知的通用上限通配符实例化

c# - 在 MEF 中导出泛型

forms - Symfony2 表单集合即使 'by_reference' => false 也不调用 addxxx 和 removexxx

java - 从Hive连接到HDFS(JSON文件)

java - 使用枚举中定义的静态字段作为构造函数中的参数

java - 使用bash在centos上安装tomcat和java