java中泛型如何理解

本文介绍了Java中的泛型使用,包括如何指定集合元素类型、自动类型推断以及自定义泛型类。通过示例展示了泛型在ArrayList中的应用,并解释了泛型类中方法的类型参数。此外,还讨论了如何在自定义类中实现泛型,以及泛型在不同类之间的交互。
摘要由CSDN通过智能技术生成
import java.util.*;

/**
	泛型如何使用?
	简单来说泛型就是用来指定集合中储存元素的类型
	语法规则(以ArrayList为例):
	List<String> list = new ArrayList<String>();
	用尖括号<> 括起来的部分表示指定集合储存的元素类型
	<String>表示集合中只能储存String类型的数据
*/
public class GenericTest{
	public static void main(String[] args){
		//list中只能储存String类型的数据
		List<String> list = new ArrayList<String>();
		list.add("java");//成功添加

		//list.add(100);// 错误: 不兼容的类型: int无法转换为String

		/*
		自动类型推断:
		以上面List为例:
		*/
		//ArrayList后面尖括号不需要写类型也能自动默认为前面List尖括号里的String。
		List<String> list2 = new ArrayList<>();

		list2.add("JDK5.0");//成功添加

		//list2.add(5.0);//错误: 不兼容的类型: double无法转换为String



		//=================分隔符,以下为代码为自定义泛型的测试=============
		MyList<Integer> myList = new MyList<>();
		//因为创建对象的时候尖括号里写了Integer,因此printE()函数中只能传入Integer类型的数据
		myList.printE(100);//100

		//myList.printE("100");// 错误: 不兼容的类型: String无法转换为Integer


		//=================
	}
}
/**
	那么可以自定义泛型吗?可以的
*/
class MyList<E>{
	//这个E可以自己随便定义,原则上可以写成任何标识符

	public void printE(E e){
		//这里的E类型要和类名后面的E一致
		System.out.println(e);
	}


	/**
		要是两个类都支持泛型,那么如何在一个类中返回另一个类的泛型类型?
		在这个函数中如何返回一个T类型的element数据呢?
		可以先获取一个Node<E>的对象,这样T类型就用E类型代替了。
	*/
	public E getElement(int index){
		//这样就获取了一个Node<E>对象
		Node<E> node =  nextFind()
		//从而使T类型的element变成E类型
		return node.element
	}

	private Node<E> nextFind(){
        //伪代码,为了说明情况
        
    }
}

//另一个支持泛型的类
class Node<T>{
	Node pre;
	Node next;
	T element;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值