以下代码摘自this oracle教程:
public class FileVisitor extends SimpleFileVisitor<Path>有必要使用泛型吗?我不能理解泛型的这一方面。为什么指定<Path>很重要,或者更好地解释为什么以这种方式声明SimpleFileVisitor?更妙的是,为什么设计师决定在这种情况下使用泛型?在它的方法中有路径参数。这还不够吗?提前谢谢。
发布于 2013-05-13 21:04:54
实际上并非如此,在它的方法中有T参数,T是传递的泛型参数,由您指定的类声明声明。例如,如果类声明如下所示:
class AnotherFileVisitor extends SimpleFileVisitor<File>这些方法将如下所示:
visitFile(File file, BasicFileAttributes attrs)等等。
发布于 2013-05-13 21:04:12
通过使用
SimpleFileVisitor<Path>它指定它采用路径,而不是文件。这些方法不能有没有泛型的路径,因为SimpleFileVisitor没有指定路径。
发布于 2013-05-13 21:05:12
类SimpleFileVisitor具有泛型方法参数(例如public FileVisitResult visitFileFailed(T file, IOException exc))。
您在FileVisitor中覆盖了它们,但是如果没有使用泛型类型,您就可以将"Whatherer“作为方法参数,编译器也不会争辩,并且有了泛型,您就必须在SimpleFileVisitor中定义的所有方法中使用相同的类作为覆盖方法(在本例中为Path)类型中的参数。
这只是一个清晰度和类型安全的问题。
https://stackoverflow.com/questions/16522655
复制相似问题