java高级编程day23【谷】

本文介绍了Java高级编程中的泛型和IO流相关内容。讲解了泛型的类、接口、方法、继承使用以及通配符的应用,强调了泛型的安全性和限制。同时,详细阐述了File类的使用,包括如何创建实例、常用方法以及文件操作。内容涵盖泛型的实践应用和File类的实战技巧。
摘要由CSDN通过智能技术生成

java高级编程day23

泛型

泛型的类和接口

泛型保证了类型转化安全

1.jdk5.0中新增的特有属性

2.集合中使用泛型:

总结:

① 集合接口或集合类在jdk5.0时都可以修改为带泛型的结构

② 在实例化集合类时,可以指明集体的泛型接口

③指明完之后,在集合类或接口中凡是定义类和接口时,内部结构(比如:方法、构造器、属性等)使用到类的位置,都指定为实例化的泛型类型

④ 注意点:泛型的类型必须是类,不能时基本数据类型。需要用到基本数据类型的位置,拿包装类替换

⑤如果实例化时,没有指定泛型的类型,默认类型就是java.lang.Object类型

如果继承的父类为泛型,但是子类没有设定泛型的指定类型那么也为Object类型

只有都为创建时这样:public A<T> extend B<T>这样子类也为泛型

如果在继承父类时,确定了父类的泛型,那么子类的泛型就是父类指定的泛型类型

泛型不同的引用不能相互赋值

静态方法中不能使用类的泛型

异常类是不能有泛型类的

想要创建T泛型类型的数组

不能直接创建,因为T是形参当我赋值后才会生效

正确创建方法:T[] arr = (T[]) new Object[10];

泛型可以部分保留

泛型的方法

在方法中出行了泛型结构,泛型参数与类的泛型参数没有任何关系

泛型方法所属的泛型类是不是泛型类都没有关系

泛型方法可以声明为静态方法,原因:泛型参数是在调用方法是确定的,并非类的实例化时确定的

泛型在继承方面的使用

类A是类B的父类,G<A>和G<B>不具备子父类关系,属性并列关系

补充:A<G>与B<G>就存在字符类关系,体现在var泛型类可以证明

通配符的使用

通配符:?

类A是类B的父类,G<A>和G<B>,二者没有关系(并列关系),二者共同的父类为G<?>

添加(写入):对于List<?>就不能向其内部添加数据

特例:可以添加null

获取(读取):允许读取数据,读取数据的类型为Object类型

有限制条件的通配符的使用

? extend Person

类要小于等于Person类,也就是说,是Person类本身或者Person类的子类

可以取值类型只能为Person类,或Person的父类,不能将Person的子类取值

不赋值,因为父类无法给子类赋值,无法确定类是多小的子类

? super Person

类要大于等于Person类,也就是说,是Person类本身或者Person类的父类

可以取值,因为不知道父类多大,所以类型只能为Object类

可以赋值将Person和子类都可以

练习

定义个泛型类DAO<T>,在其中定义一个Map成员变量,Map的键 String类型,值为T类型。
分别创建以下方法:
public void save(String id,T entity):
保存T类型的对象到Map成员变量中
public T get(String id):从map中获取id对应的对象
public void update(String id,T entity):替换map中key为id的内容改为entity对象
public Listlist():返回map中存放的所有T对象
public void delete(String id):删除指定id对象

定义一个User类:
该类包含:private成员变量(int类型)id,age;(String型)name。
定义一个测试类:
创建DAO类的对象,分别调用其save、get、update、Iist、delete方法来操作User对象

DAO类

public class DAO<T> {
   
    private Map<String, T> map;

    public DAO() {
   
        this.map = new HashMap<>();
    }

    public void save(String id, T entity) {
   
        map.put(id, entity);
    }

    public T get(String id) {
   
        return map.get(id);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值