java面试强基(12)

news2025/7/10 6:15:25

 

什么是泛型?有什么作用? 

Java 泛型(Generics) 是 JDK 5 中引入的一个新特性。使用泛型参数,可以增强代码的可读性以及稳定性。

编译器可以对泛型参数进行检测,并且通过泛型参数可以指定传入的对象类型。

比如 ArrayList<Persion> persons = new ArrayList<Persion>() 这行代码就指明了该 ArrayList 对象只能传入 Persion 对象,如果传入其他类型的对象就会报错。

ArrayList<E> extends AbstractList<E>

并且,原生 List 返回类型是 Object ,需要手动转换类型才能使用,使用泛型后编译器自动转换。 

泛型的使用方式有哪几种?

泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。

1.泛型类:

//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型
//在实例化泛型类时,必须指定T的具体类型
public class Generic<T>{

    private T key;

    public Generic(T key) {
        this.key = key;
    }

    public T getKey(){
        return key;
    }
}

如何实例化泛型类: 

Generic<Integer> genericInteger = new Generic<Integer>(123456);

2.泛型接口 :

public interface Generator<T> {
    public T method();
}

实现泛型接口,不指定类型: 

class GeneratorImpl<T> implements Generator<T>{
    @Override
    public T method() {
        return null;
    }
}

实现泛型接口,指定类型: 

class GeneratorImpl<T> implements Generator<String>{
    @Override
    public String method() {
        return "hello";
    }
}

3.泛型方法 :

   public static < E > void printArray( E[] inputArray )
   {
         for ( E element : inputArray ){
            System.out.printf( "%s ", element );
         }
         System.out.println();
    }
// 创建不同类型数组: Integer, Double 和 Character
Integer[] intArray = { 1, 2, 3 };
String[] stringArray = { "Hello", "World" };
printArray( intArray  );
printArray( stringArray  );

注意: public static < E > void printArray( E[] inputArray ) 一般被称为静态泛型方法;在 java 中泛型只是一个占位符,必须在传递类型后才能使用。类在实例化时才能真正的传递类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数,静态的方法的加载就已经完成了,所以静态泛型方法是没有办法使用类上声明的泛型的。只能使用自己声明的。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多媒体技术论文研读报告

多媒体技术论文研读报告 一、论文基本信息 论文题目为&#xff1a;基于多模态特征融合嵌入的相似广告检索方法&#xff0c;作者信息&#xff1a;南京大学计算机软件新技术国家重点实验室&#xff0c;南京大学软件学院冯奕、周晓松、李传艺、葛季栋、骆斌&#xff0c;深圳市腾…

2022最新JUC+多线程面试题

Java中实现多线程有几种方法 创建线程的常用的几种方式&#xff1a; 继承Thread类 实现Runnable接口 &#xff08;重写run方法&#xff0c;无返回值&#xff09; 实现Callable接口&#xff08; JDK1.5>,重写call方法&#xff0c;可以自定义返回值 &#xff09; 线程池方…

带式输送机的传动装置设计

目 录 摘 要 I Abstract II 1 绪论 1 1.1设计概述 1 1.2研究内容及参数 1 1.3 带传动 2 1.4圆锥-圆柱齿轮传动减速器 2 2结构设计 4 2.1V带传动 4 2.2减速器内部的传动零件 4 2.3联轴器的选择 4 3 设计计算过程及说明 6 3.1选择电动机 6 3.1.1电动机类型和结构型式选择 6 3.1.2…

android源码-ContentProvider实现原理分析

前言&#xff1a; 最初的目的是想研究下ContentProvider产生ANR原因的&#xff0c;但是如果要讲ANR的原因&#xff0c;那么必须要了解ContentProvider的完整实现原理&#xff0c;所以本篇就先讲一下ContentProvider的实现原理&#xff0c;下一篇再去讲ANR的原因。 本篇主要会讲…

估值破千亿,被资本疯抢的广汽埃安会是广汽的未来吗?

最近&#xff0c;广汽埃安在新能源市场上捷报频传&#xff0c;先是宣布完成了182.94亿元的A轮融资&#xff0c;成近年国内新能源整车最大的单笔私募融资。品牌估值更是达到了震撼人心的1032.39亿&#xff0c;基本等于广汽集团AH总市值&#xff0c;也远超港股小鹏、零跑汽车的市…

就两秒?这说出去谁信啊!

文 | xiaoyi&#xff08;转载请后台联系&#xff09;关注公众号&#xff1a;小一的学习笔记截止发文&#xff0c;北上广深一共有6510条公交线路为了获取上面的这些线路信息&#xff0c;我写了一个爬虫&#xff0c;大概用了2秒左右就搞定&#xff0c;真爽&#xff01;说出来你们…

Maven环境搭建

目录一、安装及环境配置1.1、下载1.2、Maven目录结构介绍1.3、环境配置二、关于Maven仓库的说明2.1、仓库基本分类&#xff08;私服仓库和中央仓库均为远程仓库&#xff09;2.2、本地仓库的默认位置&#xff08;在setting.xml中配置&#xff09;2.3、中央仓库连接位置的体现&am…

K8S部署后的使用:dashboard启动、使用+docker镜像拉取、容器部署(ubuntu环境+gpu3080+3主机+部署深度学习模型)

0、k8s安装、docker安装 参考&#xff1a;前两步Ubuntu云原生环境安装&#xff0c;dockerk8skubeedge&#xff08;亲测好用&#xff09;_爱吃关东煮的博客-CSDN博客_ubantu部署kubeedge 配置节点gpu&#xff1a; K8S调用GPU资源配置指南_思影影思的博客-CSDN博客_k8s 使用gpu…

机器学习-(手推)线性回归1-最小二乘法(矩阵表达)、几何意义

一、最小二乘法&#xff08;矩阵表达&#xff09;误差平均分散每个样本 如下数学推到过程&#xff08;手推&#xff01;&#xff01;&#xff01;&#xff09;&#xff1a; 数据介绍&#xff1a; D{(x1,y1),(x2,y2),......(xn,yn)&#xff0c; Xi&#xff08;P维列向量&…

留学Essay写作主要靠哪些步骤得分?

期末来了&#xff0c;留学生该怎么办&#xff1f;如何做Essay?下面我们介绍提高写作能力的有效技巧&#xff01; What should international students do when the end of the semester comes?How to do Essay?Here we introduce effective skills to improve your writing …

[附源码]SSM计算机毕业设计农贸产品交易系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SSM框架-从JDBC到Mybatis,你今天CRUD了吗?

1 Jdbc 1.1 jdbc入门使用 导入驱动jar包 新建一个目录lib&#xff0c;把jar包放进去 add as library 具体代码 public class JDBCdEMO {public static void main(String[] args) throws Exception{//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连…

vue2 - 基于Export2Excel.js导出Excel案例(js-xlsx插件二次封装使用)

目录一、项目场景二、实现思路三、准备工作1、下载js-xlsx2、下载Export2Excel.js3、下载file-saver和script-loader4、下载mock四、代码实现1、mock数据2、使用Export2Excel.js导入导出excel数据3、App.vue代码五、运行结果六、进阶&#xff08;复杂表头的导出&#xff09;一、…

让我们拥抱DataV,感受数据可视化的魅力

最近领导给安排了一个工作&#xff0c;做原型设计。看了37万字的项目需求文档&#xff0c;发现客户对数据可视化要求很高。为什么用户对可视化要求这高呢&#xff1f;可以说&#xff0c;可视化也是这两年的热点了&#xff0c;大数据&#xff0c;可视化&#xff0c;数字孪生频繁…

[HFCTF2020]EasyLogin

有注册登录&#xff0c;先注册一个账号然后登录进去 在登录页面的源代码发现 访问得到 /*** 或许该用 koa-static 来处理静态文件* 路径该怎么配置&#xff1f;不管了先填个根目录XD*/function login() {const username $("#username").val();const password $(…

树形表,自关联表查询技巧

方法一&#xff1a;部门表&#xff0c;部门表中除了自身主键id外&#xff0c;还有另一个字段parentId父id&#xff0c;可以一直递归下去 数据库表&#xff1a; 菜单这样展示就需要我们在接口的返回值中&#xff0c;返回这样的层级数据&#xff1a; [{"id": 1,"…

Mybatis-plus使用教程

注意点&#xff1a;我们在主启动类上需要扫描我们持久层文件下的所以接口 MapperScan("com.kuang.mapper") 配置日志 mybatis-plus.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImplCRUD扩展 1.插入测试 //测试插入Testpublic void testInse…

java之《浅入了解异常》适合预习,复习

&#x1f387;&#x1f387;&#x1f387;作者&#xff1a; 小鱼不会骑车 &#x1f386;&#x1f386;&#x1f386;专栏&#xff1a; 《java练级之旅》 &#x1f393;&#x1f393;&#x1f393;个人简介&#xff1a; 一名专科大一在读的小比特&#xff0c;努力学习编程是我…

就推荐 4 个 yyds 的开源项目

本期推荐开源项目目录&#xff1a;1. 2022 年黑色星期五精选项目2. 力推的 SwiftUI 教程3. 开源的高校微信小程序4. 上班摸鱼用的 IDEA 插件012022 年黑色星期五精选项目没错&#xff0c;这个开源项目叫做 Black Friday。这是一个优质开源项目精选开源项目&#xff0c;盘点了开…

制作一个简单HTML个人网页网页(HTML+CSS)大话西游之大圣娶亲电影网页设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…