tan*_*nia 5 java generics hashset
考虑以下情况:
public abstract class Vegetable {};
public class Tomato extends Vegetable {};
public class Cucumber extends Vegetable {};
public class Orange {};
Run Code Online (Sandbox Code Playgroud)
关键是 - 我希望我HashSet只存储扩展的内容Vegetable,我该怎么做?这应该很简单..
但是Set <? extends Vegetable> () hs = new HashSet <? extends Vegetable> ();,当然,这不是一个有效的结构,Java要我指定Set我想要的类型- Tomato或者Cucumber,如果我只想要任何蔬菜,该怎么办?
我宁愿不使用任何演员......
当你创建
Set<SomeType> = new HashSet<SomeType>();
Run Code Online (Sandbox Code Playgroud)
该集合能够存储属于其子类的对象SomeType.在您的情况下,您只需要
Set<Vegetable> set = new HashSet<Vegetable>();
Run Code Online (Sandbox Code Playgroud)
你现在可以这样做:
set.add(new Tomato());
set.add(new Cucumber());
Run Code Online (Sandbox Code Playgroud)
这样做会触发编译错误:
set.add(new Orange()); // Does not compile
Run Code Online (Sandbox Code Playgroud)
对于演员来说,你不需要在他们的路上投射物体set.但是,如果Vegetable在检索时需要特定类型(即不简单),则需要进行强制转换.
| 归档时间: |
|
| 查看次数: |
1966 次 |
| 最近记录: |