Java 泛型(类,接口,方法)的概述

泛型概述:
    泛型:是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型它的本质是参数化类型,
    也就是说所操作的数据类型被指定为一个参数一提到参数,最熟悉的就是定义方法时有形参,
    然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,
    然后在使用/调用时传入具体的类型这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口
泛型定义格式:
    .<类型>:指定一种类型的格式。这里的类型可以看成是形参
    .<类型1类型2…>:指定多种类型的格式,多种类型之间用逗号隔开。这里的类型可以看成是形参
    .将来具体调用时候给定的类型可以看成是实参,并且实参的类型只能是引用数据类型
泛型的好处:
    .把运行时期的问题提前到了编译期间
    .避免了强制类型转换

泛型方法定义格式
    .格式:修饰符<类型>返回值类型方法名(类型 变量名){}
    .示例:public <T> void show(T t){}

泛型类的定义格式
    .格式:修饰符 class 类名 <类型>{}
    .示例:public class Generic <T>{}
        ..次数的T可以写为任意的标识,常见的如T,E,K,V等形式的参数常用于表示泛型

泛型接口的格式
    .Generic_泛型接口<T>
泛型接口实现的格式
    .Genericimpl_泛型接口<T> implements Generic_泛型接口<T>

以下有两个类,和一个接口)(以接口类为例)

1.Genericimpl(接口实现类)

2.Generic_泛型接口<T>(interface接口类)

3.GenericDemo_泛型接口(main方法实现类)

 

1.Genericimpl(接口实现类)

package 泛型;

public class Genericimpl_泛型接口<T> implements Generic_泛型接口<T> {

	@Override
	public void show(T t) {
		// TODO 自动生成的方法存根
		System.out.println(t);
	}
	

}

2.Generic_泛型接口<T>(interface接口类)

package 泛型;

public interface Generic_泛型接口<T> {
	
	void show(T t);

}

3.GenericDemo_泛型接口(main方法实现类)

package 泛型;

public class GenericDemo_泛型接口 {
	/*
泛型接口的格式
    .Generic_泛型接口<T>
泛型接口实现的格式
    .Genericimpl_泛型接口<T> implements Generic_泛型接口<T>
	 */
	public static void main(String[] args) {
		Generic_泛型接口 g = new Genericimpl_泛型接口();
		g.show("林青霞");
		g.show(20);
		g.show('岁');
	}

}

 以下有两个类,和一个接口)(以方法为例)

1.Generic_泛型方法

2.GenericDemo_泛型方法(main测试类)

 

1.Generic_泛型方法

package 泛型;

public class Generic_泛型方法 {
	
//	public void show(String s) {
//		// TODO 自动生成的方法存根
//
//	}
//	public void show(Integer i) {
//		// TODO 自动生成的方法存根
//
//	}
//
//	public void show(Boolean b) {
//		// TODO 自动生成的方法存根
//
//	}
	public <T>void show(T t) {
		// TODO 自动生成的方法存根
		System.out.println(t);

	}

}

2.GenericDemo_泛型方法(main测试类)

package 泛型;

public class GenericDemo_泛型方法 {
	/*
GenericDemo_泛型方法定义格式:
    .格式:修饰符<类型>返回值类型方法名(类型 变量名){}
    .示例:public <T> void show(T t){}
	 */

	public static void main(String[] args) {   //其实这也是一个方法obj类型的也不是需先定义
		// TODO 自动生成的方法存根
		Generic_泛型方法 g = new Generic_泛型方法();
		g.show(true);
		g.show(20);
		g.show("java");
		
		


	}

}

 以下由四个类(以类为例子)

1.GenericDemo(mian方法测试类)

2.student类

3.teacher类

4.Generic(泛型类)

 

1.GenericDemo(mian方法测试类)

package 泛型;

public class GenericDemo {
	/*
泛型类的定义格式:
    .格式:修饰符 class 类名 <类型>{}
    .示例:public class Generic <T>{}
        ..次数的T可以写为任意的标识,常见的如T,E,K,V等形式的参数常用于表示泛型
泛型方法
    .
    
	 */

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
	    student s = new student();
	    s.setAge(20);
	    s.setName("林青霞");
	    System.out.println(s.getAge()+s.getName());
/*-------------*/System.out.println("-----------------");/*--------------------*/	    
	    teacher t = new teacher();
	    t.setAge(20);
	    System.out.println(s.getAge());
/*-------------*/System.out.println("-----------------");/*--------------------*/	
        Generic<String> g1=new Generic<String>();
        g1.setT("林青霞");
	    System.out.println(g1.getT());
/*-------------*/System.out.println("-----------------");/*--------------------*/	
        Generic<Integer> g2=new Generic<Integer>();
        g2.setT(200);
	    System.out.println(g2.getT());
/*-------------*/System.out.println("-----------------");/*--------------------*/	
        Generic g3=new Generic();
        g3.setT("ASDSAD");
        g3.setT(5286);
        g3.setT('d');
	    System.out.println(g3.getT());
/*-------------*/System.out.println("-----------------");/*--------------------*/	
        Generic<Boolean> g4=new Generic<Boolean>();
        g4.setT(true);
        System.out.println(g4.getT());	    
	}
}

2.student类

package 泛型;

public class student {
	private String name;
	private int age;
	/**
	 * @param name
	 * @param age
	 */
	public student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	/**
	 * 
	 */
	public student() {
		super();
	}
	/**
	 * @return name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name 要设置的 name
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return age
	 */
	public int getAge() {
		return age;
	}
	/**
	 * @param age 要设置的 age
	 */
	public void setAge(int age) {
		this.age = age;
	}
	

}

3.teacher类

package 泛型;

public class teacher {
	private Integer age;

	/**
	 * @return age
	 */
	public Integer getAge() {
		return age;
	}

	/**
	 * @param age 要设置的 age
	 */
	public void setAge(Integer age) {
		this.age = age;
	}
	

}

4.Generic(泛型类)

package 泛型;

public class Generic<T>{
	private T t;

	/**
	 * @return t
	 */
	public T getT() {
		return t;
	}

	/**
	 * @param t 要设置的 t
	 */
	public void setT(T t) {
		this.t = t;
	}
	

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

很丧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值