class<T extends interface> 或 class<T extends abstract class>

这篇具有很好参考价值的文章主要介绍了class<T extends interface> 或 class<T extends abstract class>。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

package com.java3y.austin.test;


abstract class A{
    public abstract void test();
}

class B extends A{
    B(){
        System.out.println("B的构造函数");
    }

    @Override
    public void test(){
        System.out.println("B的test函数");
    }
}

class C extends A{
    C(){
        System.out.println("C的构造函数");
    }

    @Override
    public void test() {
        System.out.println("C的test函数");
    }
}

    class D<T extends A>{
    T t;
    D(){

    }
    D(T t){
        this.t = t;
        System.out.println("D的有参构造函数");
    }
    public void test(T t) {
        System.out.println(t.getClass());
        System.out.println("D的test函数");
    }
}

public class Demo {
    public static void main(String[] args) {
//        D ad = new D<>();
        D<A> ad = new D<>();
        ad.test(new B());
        ad.test(new C());
    }
}

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
类型通配符一般是使用 ? 代替具体的类型参数
要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界。
泛型作用:

  • 参数化数据类型,提供编译时数据类型安全检测机制

泛型参数在编译和运行时候的状态?文章来源地址https://www.toymoban.com/news/detail-651465.html

到了这里,关于class<T extends interface> 或 class<T extends abstract class>的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++学习笔记八:极限和数学运算<limits><cmath>

    1) limits库: 1.1 源文档: https://en.cppreference.com/w/cpp/types/numeric_limits #include limits   1.2 库函数: 函数解释: 对于一个浮点数,lowest表示最小的可表示的负数,min表示最小的可表示的接近0的数,max表示最大的可表示的正数 对于一个有符号整数,min表示可以表示的最小的负数,

    2024年02月05日
    浏览(26)
  • 详解dedecms后台编辑器将回车<br>改为<p>的方法

    DEDECMS编辑器默认回车[确认键]是返回 这样的。 有时候我们需要返回 这样的,今天我们就讲讲后台编辑器将回车将 改为 的有效教程吧。 方法也很简单,首先我们找到dedecms后来台编辑器的配置文件。 所在路径为:/include/ckeditor/config.js 我们打开它,里面有两个字: 替换为 这

    2024年02月02日
    浏览(39)
  • <html>

    在iOS开发中,经常会涉及到支付功能,这里对常见的微信支付做一下详细说明 微信开放平台(微信支付须要付费的。注冊成功后使用的主要为AppKey/SecretKey,当中SecrectKey交由后台完毕集成) 微信开放平台是商户APP接入微信支付开放接口的申请入口。通过此平台可申请微信APP支付。

    2024年02月08日
    浏览(28)
  • .NET Interface [接口]、abstract【抽象类】

    接口 Interface 接口不能被实例化 接口只能包含方法声明 接口中的成员包括方法、属性、索引器、事件 接口中不能包含常量、字段、构造函数、析构函数、静态成员 接口中的所有成员默认 public,因此接口中不能有private修饰符 派生类必须实现接口的所有成员 一个类可以继承多

    2024年02月05日
    浏览(84)
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明

    1.abstract(抽象类) dart 抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。 抽象类通过abstract 来定义。 抽象类不可以被实例化,只有继承他的子类可以。 子类继承抽象类必须实现里面的抽象方法。 抽象类作为接口,必须实现抽象类里面的所有

    2024年01月17日
    浏览(22)
  • 将较大的数组赋值<el-table></el-table>时,会导致页面卡顿,甚至崩溃

    遇到的问题:将长度为40的数组数据赋值el-table/el-table,我发现loading没有效果,后面发现是页面卡住了,loading直接没有出现。 经过查询资料,发现el-table会有卡顿的问题,看到有的博主推荐使用一款叫umy-ui的插件,我就试了试,发现卡顿的问题解决了。 官网: http://www.umyui

    2024年02月05日
    浏览(42)
  • ChatGPT还是有点东西的-public static <T> List<T> Arrays.asList(T... a) {...}

    业务开发需要判断业务状态是否在30、40、50、60的集合内,所以写了以下代码 自我Review代码时,验证了下这行代码,发现状态为30时,仍然返回false。 在自我怀疑中调整代码,并验证,代码如下: 没想很明白,于是问了下ChatGPT。 Arrays.asList() 方法返回的结果类型取决于传入的

    2024年02月12日
    浏览(31)
  • protolator - Protobuf <==> json

    github.com/hyperledger/fabric-config/protolator 是 Hyperledger Fabric 中的一个 Go 包,用于将 Protocol Buffers(ProtoBuf)消息和 JSON 格式之间进行转换。它提供了一种方便的方式来将 Fabric 配置文件(以 ProtoBuf 格式表示)与 JSON 配置文件之间进行相互转换。这对于 Fabric 的配置管理和部署非常有

    2024年02月15日
    浏览(26)
  • 记录--新的HTML标签 :<search>

    本文介绍了一种新的HTML元素搜索方法,并提供了一个实用的工具来帮助开发者快速找到所需的元素。这对于那些需要处理大量HTML元素的开发者来说是非常有用的。文章还通过提供一些常见元素的用法示例,帮助开发者更好地理解和应用这些元素。在众多元素中找到特定的元

    2024年02月09日
    浏览(34)
  • <四>move移动语义和forward类型转发

    move : 移动语义,得到右值类型 forward:类型转发,能够识别左值和右值类型 只有两种形式的引用,左值引用和右值引用,万能引用不是一种引用类型,它存在于模板的引用折叠情况,但是能够接受左值和右值 区分左值和右值得一个简单方式就是能不能取地址 一个右值一旦有名字那

    2024年02月02日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包