JAVA泛型接口

泛型接口:允许在定义接口时声明类型参数,即泛型接口,这种类型参数在整个接口中可当成类型使用

     定义泛型接口语法:

[访问控制符]interface 接口名<类型参数表>{//接体口}

     子类实现泛型接口形式

1.实现子类没有明确地指明类型参数的具体类型

class Sub<类型参数表>implements IBase<类型参数表>{}

2.实现子类明确指明类型参数的具体类型

class Sub<具体类型列表>implements IBase<具体类型列表>{}

class Sub implements IBase<具体类型列表>

     泛型接口案例:子类Sub实现接口 IBase<T>

      泛型与静态成员关系:

1.泛型的类型参数不能作为静态成员变量的类型

2.静态方法中不能有任何泛型类型参数出现

package jus;
interface IBase<T>{
   
T getT();
   
void showType();
}

class Sub<T> implements IBase<T>{
   
private T data;
   
public Sub(T data){
       
this.data = data;
    }
   
public T getT() {
        System.
out.println("返回类型参数T");
       
return this.data;
    }
   
public void showType() {
        System.
out.println("输出类型参数T:"+this.data.getClass().getName());
    }
}

class  person{}
public class Demo {
   
public static void main(String[] args) {
       IBase<Person> sub =
new Sub<>(new Person());
        sub.showType();
        IBase<String> sub2 =
new Sub<>(new String("孙悟空"));
        sub2.showType();
    }
}

package jus;
interface IBase<T>{
   
T getT();
   
void showType();
}

class Sub implements IBase<String>{
   
private String data;
   
public Sub(String data){
       
this.data = data;
    }
   
public String getT() {
        System.
out.println("返回类型参数T");
       
return this.data;
    }
   
public void showType() {
        System.
out.println("输出类型参数T:"+this.data.getClass().getName());
    }
}

class  person{}
public class Demo {
   
public static void main(String[] args) {
       IBase sub =
new Sub("孙悟空");
        sub.showType();
    }
}

package jus;
interface Generator<E>{
   
void add(E e);
   
E get(int index);
}

class GeneratorAny<E> implements Generator<E> {
   
private Object[]elem;
   
private int index = 0;
   
private int max;
   
public GeneratorAny(int count) {
       
this.max = count;
       
elem = new Object[max];
    }
   
public E get(int index) {
       
if (index >= max || index < 0) return null;
       
return (E) elem[index];
    }
   
public void add(E e) {
       
if (index >= max)
            System.
out.println("数据已满:" + "不能保存" + e);
       
else {
           
elem[index] = e;
           
index++;
        }
    }
}

class  person{
       
private String name;
       
public person(String name){
       
this.name = name;
        }
   
public String toString() {
       
return "姓名:"+name;
    }
}

public class Demo {
   
public static  void main(String[] args) {
       GeneratorAny<person>gper =
new GeneratorAny<person>(3);
        gper.add(
new person("孙悟空"));
        gper.add(
new person("猪八戒"));
        gper.add(
new person("唐僧"));
        gper.add(
new person("沙僧"));
        System.
out.println(gper.get(0));
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值