泛型类示例
class Point{
private T x;
private T y;
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
}
public class test3 {
public static void main(String[] args) {
//T可以使int等类型
Point p = new Point();
p.setX("X坐标:100");
p.setY("y坐标:200");
System.out.println(p.getX() +" " + p.getY());
}
}
构造方法中使用泛型类
构造方法能为类中的属性初始化(从构造方法传入属性值),那么如果类中的属性通过泛型指定,而又需要通过构造方法设置属性内容的时候,那么构造方法的定义与之前并无不同,不需要想声明类那样指定泛型。
package fanxingDemo;
class Con1{
private T value;
//构造方法传入value值
public Con1(T value){
this.value = value;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
public class GenerateDemo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Con1 cString = new Con1("构造方法中使用泛型");
System.out.println("hello" + cString.getValue());
}
}
指定多个泛型类
设置多个泛型直接在<>中添加多个泛型就可以了
package fanxingDemo;
//指定多个泛型,并且从泛型的构造方法传递属性值
class Gen{
private T name;
private K age;
public Gen(T name,K age){
this.name = name;
this.age = age;
}
public T getName() {
return name;
}
public void setName(T name) {
this.name = name;
}
public K getAge() {
return age;
}
public void setAge(K age) {
this.age = age;
}
}
public class GenerateDemo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Gen g = new Gen("张三",25);
System.out.println(g.getName() + g.getAge());
}
}
通配符的使用
当函数传入泛型类型不确定是,使用?代替类型,不论什么类型都能执行。
package fanxingDemo;
class Infor{
private T key;
public Infor(T value){
this.key = value;
}
public T getKey() {
return key;
}
public void setKey(T key) {
this.key = key;
}
}
public class GenerateDemo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Infor sInfor = new Infor("String");
call(sInfor);
System.out.println();
}
//传入Infor泛型时不确定使用的类型,此时可以使用?来代替
public static void call(Infor> i) {
System.out.println(i.getKey());
}
}
泛型接口
之前讲的都是泛型类,现在介绍泛型接口
package fanxingDemo;
//泛型+抽象接口
interface GenInter{
public static final Object NAME = "极客学院";
public abstract void tell();
}
class Gen implements GenInter{
private T info;
public Gen(T infor){
this.info = infor;
}
public T getInfo() {
return info;
}
public void setInfo(T info) {
this.info = info;
}
@Override
public void tell() {
// TODO Auto-generated method stub
}
}
public class GenerateDemo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Gen g = new Gen("你好!");
System.out.println(g.getInfo() + GenInter.NAME);
}
}
泛型方法
泛型方法中可以定义泛型参数,此时,参数的类型就是传入的数据类型。
public class GenerateDemo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(call("极客学院"));
}
//泛型方法,注意T这种格式第一个指定那个字母是泛型,第二个T指返回类型。
public static T call(T value){
return value;
}
}
泛型数组
使用泛型方法的时候,也可以传递或返回一个泛型数组。
public class GenerateDemo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] str = {"第一个","第二个","第三个"};
System.out.println(call(str));
Integer[] i = {1,2,3,4,5};
System.out.println(call(i));
}
//泛型数组,返回string类型
public static String call(T arr[]){
for(int i = 0; i
System.out.println(arr[i]);
return "成功返回!";
}
}