Java泛型的使用限制实例分析
作者:cakincqm 发布时间:2023-05-07 20:14:52
标签:Java,泛型
本文实例讲述了Java泛型的使用限制。分享给大家供大家参考,具体如下:
一 什么情况下不能使用泛型
1 不能使用泛型的形参创建对象。
T o=new T(); // 不允许
2 在泛型类中,不能给静态成员变量定义泛型
public class A<T>
{
public static T t; //错误
public T getA(){ //正确
......
}
}
3 泛型类不能继承java.lang.Throwable
类
public class D<T> extends java.lang.Throwable //错误
4 泛型类不能初始化一个数组
T[] b = new T[10]; //错误
二 怎样限制泛型的实例化
泛型类名<T extends 超类>
三 实战
1 代码
public class Base<T extends supA> {
T m;
Base( T t ) {
m = t;
}
public T getM() {
return m;
}
public void print() {
System.out.println("base print : " + m);
}
public static void main( String[] args ) {
B bb = new B("test B");
Base<B> base = new Base<B>(bb);//允许
//Base<String> base=new Base<String>("base class is general");//不允许
System.out.println(base.getM());
supA aa = new supA();
Base<supA> base1 = new Base<supA>(aa);
System.out.println(base1.getM());
}
}
class supA {
public String toString() {
return "supA";
}
}
class B extends supA {
String b;
public B( String b ) {
this.b = b;
}
public String toString() {
return "subB";
}
}
2 运行
subB
supA
3 说明
通过T extends supA
将泛型实例化对象限制到必须是supA或supA的子类。
supA可以是接口,但是extends
不能换成implements
,必须使用extends
。
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
来源:https://blog.csdn.net/chengqiuming/article/details/93360133


猜你喜欢
- 目录一、简介二、入门案例三、自定义认证逻辑四、自定义授权逻辑五、注销登录六、记住我功能七、会话管理一、简介Spring Security是一
- 1.Bean 的创建生命周期UserService.class —> 无参构造方法(推断构造方法) &md
- java 多线程死锁 相信有过多线程编程经验的朋友,都吃过死锁的苦。除非你不使用多线程,否则死锁的可能性会一直存在。为什么会出现
- ES 简介Elasticsearch 是一个基于 Lucene 实现的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 REST
- /// <summary>/// 计算日期的间隔(静态类)/// </summary>public static c
- 1. 概述锁是Java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程获取同一个锁的线程发送消息。锁在实际使用时只
- 今天在APP中增加一个添加项目的功能,项目的主键为整数,要让它自增长。既然要自增长,那么在代码里面就不用给id字段赋值。但是调试的时候发现不
- 目录什么是异常?编译时还是运行时?“受检异常”究竟可不可取?我的观点什么是异常?要了解受检异常,首先要了解什么是异常。在Java中,异常是一
- Springboot导入本地jar后 打包依赖无法加入1.本地jar包2.pom文件添加自定义jar包导入<!--自定义jar--&g
- java接口返回参数按照请求参数进行排序在项目实际开发中可能遇到过这种问题,接口请求参数顺序是[a,b,c],结果返回的数据是[bObjec
- mybatis if test判断BigDecimal遇到的坑<update id="test" paramete
- 引言一个复杂的分布式系统,用户发起一个请求,这个请求可能调用几十到几百个服务,经过很多业务层,而每个业务又是多个机器集群,一个请求具体被随机
- 本文实例讲述了C#用匿名方法定义委托的实现方法。分享给大家供大家参考。具体实现方法如下://用匿名方法定义委托 class Program
- 本文以一个简单实例讲述了C#实现自定义双击事件的方法,分享给大家供大家参考之用。具体方法如下:主要功能代码如下:public partial
- strcpy函数详解如下1.函数介绍1.1.函数接口char * __cdecl strcpy(char * dst, const char
- 今天学习了Spinner组件的使用,非常好用的一款组件,相当于从下拉列表中选择项目,今天收获颇多,下面给大家演示一下Spinner的使用(分
- 数据适配DataAdapter 对象是DataSet 和数据源之间的桥梁,可以建立并初始化数据表(即DataTable),对数据源执行SQL
- springboot整合mybatis实现数据库更新批处理1.在mapper接口中编写方法/** * 修改book表中的销量和库存
- 一、需求描述拼图是一款益智类经典游戏了,本游戏学习了一些前辈们的经验,整体来说讲,将图片用切图工具进行切割,监听用户手指滑动事件,当用户对凌
- TimeSpan 结构 表示一个时间间隔。命名空间:System 程序集:mscorlib(在 mscorlib.dll 中)说