首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这里有什么需要泛型的?

这里有什么需要泛型的?
EN

Stack Overflow用户
提问于 2013-05-13 20:58:08
回答 3查看 141关注 0票数 2

以下代码摘自this oracle教程:

代码语言:javascript
复制
public class FileVisitor extends SimpleFileVisitor<Path>

有必要使用泛型吗?我不能理解泛型的这一方面。为什么指定<Path>很重要,或者更好地解释为什么以这种方式声明SimpleFileVisitor?更妙的是,为什么设计师决定在这种情况下使用泛型?在它的方法中有路径参数。这还不够吗?提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-13 21:04:54

实际上并非如此,在它的方法中有T参数,T是传递的泛型参数,由您指定的类声明声明。例如,如果类声明如下所示:

代码语言:javascript
复制
class AnotherFileVisitor extends SimpleFileVisitor<File>

这些方法将如下所示:

代码语言:javascript
复制
visitFile(File file, BasicFileAttributes attrs)

等等。

票数 1
EN

Stack Overflow用户

发布于 2013-05-13 21:04:12

通过使用

代码语言:javascript
复制
SimpleFileVisitor<Path>

它指定它采用路径,而不是文件。这些方法不能有没有泛型的路径,因为SimpleFileVisitor没有指定路径。

票数 2
EN

Stack Overflow用户

发布于 2013-05-13 21:05:12

SimpleFileVisitor具有泛型方法参数(例如public FileVisitResult visitFileFailed(T file, IOException exc))。

您在FileVisitor中覆盖了它们,但是如果没有使用泛型类型,您就可以将"Whatherer“作为方法参数,编译器也不会争辩,并且有了泛型,您就必须在SimpleFileVisitor中定义的所有方法中使用相同的类作为覆盖方法(在本例中为Path)类型中的参数。

这只是一个清晰度和类型安全的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16522655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档