本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
![]() 5分55秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 步骤 1 : 泛型 Generic 步骤 2 : 泛型的简写 步骤 3 : 泛型的系统学习 步骤 4 : 练习-支持泛型的ArrayList 步骤 5 : 答案-支持泛型的ArrayList
不指定泛型的容器,可以存放任何类型的元素
指定了泛型的容器,只能存放指定类型的元素以及其子类 package property;
public class Item {
String name;
int price;
public Item(){
}
//提供一个初始化name的构造方法
public Item(String name){
this.name = name;
}
public void effect(){
System.out.println("物品使用后,可以有效果");
}
}
为了不使编译器出现警告,需要前后都使用泛型,像这样:
List<Hero> genericheros = new ArrayList<Hero>(); 不过JDK7提供了一个可以略微减少代码量的泛型简写方式 List<Hero> genericheros2 = new ArrayList<>(); 后面的泛型可以用<>来代替,聊胜于无吧 package collection;
import java.util.ArrayList;
import java.util.List;
import charactor.Hero;
public class TestCollection {
public static void main(String[] args) {
List<Hero> genericheros = new ArrayList<Hero>();
List<Hero> genericheros2 = new ArrayList<>();
}
}
借助泛型和前面学习的面向对象的知识,设计一个ArrayList,使得这个ArrayList里,又可以放Hero,又可以放Item,但是除了这两种对象,其他的对象都不能放
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
![]()
问答区域
2022-02-26
答案
3 个答案
木宇 跳转到问题位置 答案时间:2024-07-09 打卡
思路一个父类两个子类
wr123 跳转到问题位置 答案时间:2023-11-23 package ArrayList;
import charactor.Hero;
import property.Item;
import java.util.ArrayList;
public class MyArrayList extends ArrayList {
@Override
public boolean add(Object o) {
if ((o instanceof Hero) || (o instanceof Item)) {
return super.add(o);
} else {
System.out.println("所添加的类不符合要求,请选择Hero或者Item对象添加");
return false;
}
}
@Override
public void add(int index, Object element) {
if ((element instanceof Hero) || (element instanceof Item)) {
super.add(index, element);
} else System.out.println("该对象不是Hero或者Item及其子类,添加失败");
}
}
测试
package collection;
import java.util.ArrayList;
import ArrayList.MyArrayList;
import charactor.Hero;
import property.Item;
public class TestCollection {
public static void main(String[] args) {
MyArrayList myArrayList=new MyArrayList();
Hero hero=new Hero("盖伦");
Item item=new Item("红水晶");
MyArrayList lgu=new MyArrayList(); //用于验证
System.out.println(myArrayList.add(hero));
System.out.println(myArrayList.add(item));
System.out.println(myArrayList.add(lgu));
System.out.println(myArrayList.toString());
}
}
zhushu 跳转到问题位置 答案时间:2022-11-17 和我想的类似。设计一个父类作为hero和item的父类。然后arrayList后面的类型为父类。这样合理不?
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2021-07-06
我的答案
3 个答案
zjlilil 跳转到问题位置 答案时间:2023-04-14 这个类继承了ArrayList类,并重写了add方法。在add方法中,判断传入的对象是否为String或Integer类型,如果是,则调用父类的add方法添加到ArrayList中;否则抛出异常。这样就实现了只能存放String和Integer类型数据的ArrayList。
蔚蓝天空157 跳转到问题位置 答案时间:2022-08-07 妙蛙!
theCarrot 跳转到问题位置 答案时间:2022-02-24 太牛了
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2021-06-22
练习-支持泛型的ArrayList
2021-01-25
Lists.newArrayList()也行
2020-11-05
答案一:继承ArrayList,再重写方法add 实现了要求
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 20 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|