Java??????第13章枚举类型与泛型

2023-12-13 04:45:48

泛型概念
实质上就是程序员定义的安全的类型强制类型转换的错误不会被编译器捕捉,而在进行后出现异常

,所以强制类型转换存在安全隐患,所以提供了泛型机制

定义泛型类
object类是最上层的父类很多程序员为了使程序更加通用,设计程序时通常使返回和传入的参数以object类为主,当使用这些实例的时候必须将它们转换为原来的类型,否则会出现ClassCastException异常。

为了应对这种问题,提供了泛型机制,语法如下:

使用泛型类定义的类在声明对象时可以根据不同的需求,指定类型。

在使用类中的方法传递或返回数据类型时不需要进行类型转换操作,而是在声明泛型对象时<>符号设置数据类型。

泛型的常规用法

定义泛型时声明多个类型

class Myclass<T1,T2>{ }

定义泛型时声明数组类型

就是定义类和定义数组一样;

使用泛型机制时声明一个数组,但不可以使用泛型建立数组?

泛型的高级用法?

1、限制泛型可用类型

默认可以使用任何类型来实例化一个泛型类对象,但Java中也对泛型类实例的类型作了限制。

语法如下:class 类名名称<T extends anyClass>

anyClas指某个接口或类,使用泛型限制后,泛型类的类型必须实现或继承anyClass 这个接口或类。无论anyClass是接口还是类,在进行泛型限制时都必须使用extends关键字。

2、使用类型通配符
在泛型机制中,提供了类型通配符,主要作用是在创建一个泛型类对象时限制这个泛型类的类型实现或继承某个接口或子类。要声明这样一个对象可以使用“?”通配符来表示,同时使用extends关键字来对泛型加以限制。

使用泛型类型通配符的语法如下:泛型类名称<?extends List>a=null;

3、继承泛型类与现实泛型接口

定义泛型的类和接口可以被继承与实现。让SubClass类继承ExtendClass的泛型,代码如下:

class ExtendClass<T1>{}

class SubClass<T1,T2,T3>implements SomeInterface<T1>{}
?

package java2;
 
public interface 四季 {//四季接口
	final int c=1;
	final int x=2;
	final int q=3;
	final int d=4;
}
 
public enum S四季Enum {四季枚举
	c,
    x,
	q,
	d,
 
public class 季节 {
	public static void print1(int temp) {
		
		switch(temp) {
		case 四季.c:
			System.out.println("这是春季");
			break;
		case 四季.x:
			System.out.println("这是夏季");
			break;
		case 四季.q:
			System.out.println("这是秋季");
			break;
		case 四季.d:
			System.out.println("这是冬季");
			break;
		default :
			System.out.println("编号有误,请输入正确的编号!");
		}
	}
	private static void print2(S四季Enum c) {
		switch(c) {
		case c:
			System.out.println("这是春季");
			break;
		case x:
			System.out.println("这是夏季");
			break;
		case q:
			System.out.println("这是秋季");
			break;
		case d:
			System.out.println("这是冬季");
			break;
		default :
			System.out.println("编号有误,请输入正确的编号!");
		}
		
	}
	
	public static void main(String[] args) {
		print1(2);
		print2(S四季Enum.c);
		
	}

文章来源:https://blog.csdn.net/kunkunJava/article/details/134892506
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。