泛型

泛型

Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常

泛型是提供给javac编译器使用的,它用于限定集合的输入类型,让编译器在源代码级别上,即挡住向集合中插入非法数据。但编译器编译完带有泛形的java程序后,生成的class文件中将不再带有泛形信息,以此使程序运行效率不受到影响,这个过程称之为“擦除”。

泛型类

泛型类就是把泛型定义在类上,用户使用该类的时候,才把类型明确下来….这样的话,用户明确了什么类型,该类就代表着什么类型…用户在使用的时候就不用担心强转的问题,运行时转换异常的问题了。

复制代码
// <T> 表明这是一个泛型类
public class ObjTool<T> {
    public T obj;
    public T getObj() {
        return obj;
    }
    public void setObj(T obj) {
        this.obj = obj;
    }
}
复制代码

泛型方法

定义泛型方法….泛型是先定义后使用的

复制代码
class ObjTool{
    // <T> 表明这是一个泛型方法
        public <T> T getT(T t){
            return t;
        }
        public <T> void print(T t){
            System.out.println(t);
        }
    }
复制代码

泛型接口

// <T> 表明这是一个泛型接口
public interface Inter<T> {
    public abstract void show(T t);

}
  • 实现类的要是重写父类的方法,返回值的类型是要和父类一样的!

  • 类上声明的泛形只对非静态成员有效

类型通配符

泛型中的<Object>并不是像以前那样有继承关系的,也就是说List<Object>List<String>是毫无关系的,所以需要有通配符代表所有类型

?号通配符表示可以匹配任意类型,任意的Java类都可以匹配…..

当我们使用?号通配符的时候:就只能调对象与类型无关的方法,不能调用对象与类型有关的方法

设定通配符上限

List<? extends Number> List集合装载的元素只能是Number的子类或自身

设定通配符下限

<? super Type> 传递进来的只能是Type或Type的父类

无论是设定通配符上限还是下限,都是不能操作与对象有关的方法,只要涉及到了通配符,它的类型都是不确定的!

 

posted @   hjy1995  阅读(145)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示