泛型基础复习

泛型详解

  1. 概念:泛型即“参数化类型”;提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。所谓参数化类型就将类型由原来具体类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(类型形参),然后在使用时传入具体的类型(类型实参)。
  2. Java中的泛型,只在编译阶段有效。泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型,编译阶段以后会去泛型化。
  3. 泛型的三种使用方式为:泛型类、泛型接口、泛型方法;

示例代码

public class FanXingTest2 {

      public static void main(String[] args) {

           Box<String, Double> box2 = new Box<String, Double>();

           box2.setX("横坐标未知");

           box2.setY(66.88);

           box2.ShowPoint(box2.getX(), box2.getY());

      }

}
class Box<T1,T2>{

      T1 x;

      T2 y;

      public T1 getX() {

           return x;

      }

      public void setX(T1 x) {

           this.x = x;

      }

      public T2 getY() {

           return y;

      }

      public void setY(T2 y) {

           this.y = y;

      }

      public <T1,T2> void ShowPoint(T1 x, T2 y){

           T1 x1 = x;

           T2 y1 = y;

           System.out.println("这个点的坐标是:"+x+","+y);

      }

}

我的理解:自定义泛型可以类比C语言中的结构体学习。

原文地址:https://www.cnblogs.com/panweiwei/p/11909177.html

时间: 2024-10-18 04:23:39

泛型基础复习的相关文章

C++基础复习

一. C++与C的比较: C语言是一个结构化语言,它的重点在于算法和数据结构,C语言的设计首先要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到的输出(或实现过程(事物)控制). C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制. 所以C语言和C++的最大区别在于它们解决问题的思想不同,一个面向过程一个面向对象. C++对C的"增强",表现在六个方面: 1.类型检测更为严格. 2.

温故知新,基础复习(快速排序及优化)

温故知新,基础复习(快速排序及优化) 使用了三值取中和插排优化 #include<stdio.h> #define InsertSortNumber 10 void InsertSort(int Arra[],unsigned int LowIndex,unsigned int HighIndex) { printf("low=%d,high=%d\n",LowIndex,HighIndex); for (unsigned int i = LowIndex + 1; i &

温故知新,基础复习(二叉堆排序)

温故知新,基础复习(二叉堆排序) 最小堆(最终数组的数据是降序),最大堆(最终数组的数据是升序) 下例是最小堆 #include <stdio.h> #include <stdlib.h> void Swap(int Arra[],unsigned int LeftIndex,unsigned int RightIndex) { int TeampValue = Arra[LeftIndex]; Arra[LeftIndex]=Arra[RightIndex]; Arra[Righ

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对) #include<stdio.h> #include<stdlib.h> void PrintSumNumbers(int Arra[],int ASize,int Sum) { //O(1) if (ASize<2) { printf("The size of the Arra is invalid.\n"); return; } if(Sum&

软件开发技术基础复习要点

软件开发技术基础复习要点 1.生存周期: 指一个软件从提出开发要求开始,经过需求分析.设计.制造.调试.使用.维护,直到软件产品被淘汰为止的整个过程. 2.简述软件工程的基本原理: 用分阶段的生命周期计划严格管理: 坚持进行阶段评审: 实行严格的产品控制: 采纳现代程序设计技术: 结果应该能清楚地审查: 开发小组应小而精: 承认不断改进软件工程实践的必要性. 3.简述产生软件危机的原因和解决办法: 原因:开发软件所需的高成本与软件产品的低质量之间存在尖锐的矛盾,致使软件开发陷入循环之中,即研制软

JS基础复习

js基础语法 Netcape js基础语法规范(ECMAScript1,2,3,3.1,5(IE9),6   ES    ES6=es2015) DOM BOM BOM :是由浏览器厂商各自实现的,所以差异比较大 DOM:相关的规范  是由W3C维护的 Node的优势  没有浏览器的兼容性问题 前端项目尽量不要使用ES6,需要考虑兼容性问题 --------------------------------数据类型--------------------------- 1.数据类型分类: 基本数据

c# 基础复习1

1. 类和对象 1.1 类和对象的概念 类:对象的类型,它不同于 int 等基本数据类型,因为类具有行为:也可以说是具有相 同特征和行为的一组对象的集合. 对象:对象是一个个你能看得见,摸得着的实体,是实实在在的事物,具有相同特征和 行为的对象可以抽象成类. 1.2 定义类的语法 [modifier] class ClassName { //[field,Method] } 1.3 如何创建对象 ClassName name=new ClassName(); 1.4 命名空间: 作用:用于管理类

Java 笔记之基础复习

1.& 与 &&的区别 两个都有逻辑与的功能.但是所不同的是,当&两边的表达式不是boolean类型的时候,&具有位与的功能:&&是短路与,当判断到前一个表达式为false的时候,将不会再去计算后面的表达式. 如: int i = 0; System.out.println((1==0)&(0==(i++))); System.out.println(i); 输出是: false 1 但是, int i = 0; System.out.pri

sql基础复习

--1.while循环 declare @sum int declare @i int set @i=1 set @sum=0 while(@i<101) begin set @sum [email protected]+@i set @[email protected]+1 if(@i>90) print @i end print @sum --2.goto语句 declare @num int set @num=100 flag: print @num select @[email pro