当前位置:  开发笔记 > 编程语言 > 正文

如何在类定义中捕获泛型类型中的子类型?

如何解决《如何在类定义中捕获泛型类型中的子类型?》经验,为你挑选了1个好方法。

我不敢相信如果没有将类输入到冗余的2类类中,我就无法捕获P:

public class MyClass> {

   T getList(/**/){}
   P getRandomElement(){ /**/ }
}

我是否真的需要定义和实例化MyClass MyClass>,因此无法推断它?

编辑:我的意思是我看到冗余必须定义MyClass>因为那时我需要实例化它总是作为MyClass>,并随身携带字符串.如果语言允许这样的话会很好

MyClass>或类似的.这样,在执行时和MyClass>返回ArrayList执行时会很好地返回.getList()StringgetRandomElement()



1> rgettman..:

如果你真的必须有确切的List返回类型getList,那么你需要type参数T以及P.

public class MyClass> {

这样,您可以使用MyClass>getList方法返回的方法和返回a ArrayListgetRandomElement方法String.

但是,通常不需要知道确切的类型List.通常,如果你有一个List,那么对于这个类的用户来说这List是真的是什么并不重要.在这种情况下,你不需要类型参数T,只P.您可以将课程更改为:

public class MyClass

{ List

getList(/**/){} P getRandomElement(){ /**/ } }

然后你就可以有MyClassgetList方法返回一个ListgetRandomElement返回的方法String.


为什么这个解决方案多余?
推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有