Java入门 :泛型

1泛型

泛型: 广泛的类型

在开发中对数据一致性的要求是比较看重的!!!

方便于数据储存的一致性

1.1带有泛型的方法

语法格式:

public <无意义的占位符> 返回值类型 方法名 (参数列表){
​
}

这个 <无意义的占位符> 里的字符可以任意英文字母,只是在开发中常用的就是 'T' 'E' '?' 这三个

几种方法类型声明:

1.1.1无参数无返回值的方法

public <T> void 方法名(){
​
}

1.1.2有参无返回值的方法

public <T> void 方法名(T t){//这个T也可以时其他的英文字母,只是在开发中常用的就是 'T' 'E' '?' 这三个
    
}

1.1.3无参有返回值的方法

public <T> T 方法名(){
    
}

1.1.4有参有返回值的方法

public <T> T 方法名字(T t){
    
}
​

演示

public class Demo{
    public static void main (String [] args){
        test("张三");//这个里面填什么类型的数据这个T就是什么类型的数据
        test(18);
        test('男');
        test(78.5);
    }
    public static <T> void test(T t){
        System.out.println(t);
    }
}

注意:泛型方法一定是带有参数才有意义,否则完全没有必要声明一个泛型方法

1.2带有泛型类型的类

语法格式:

class 类名 <无意义的占位符> {
​
}

演示

public class Demo1 {
    public static void main(String[] args) {
        Test<String> test = new Test<>();
        //当你创建对象时给这个泛型类赋了值,
        // 那么在这个对象里这个T就是String类型的了
        //所以当在调用这个eat方法时只能传入String类型的数据
        test.eat("张三吃黄焖鸡");
        // test.eat(18);//就会报错
        Test<Integer> test2 = new Test<>();
        //在创建对象的时候就会给这个泛型赋值,并且这个对象无法改变
        test2.eat(88);//只能传入int类型的数据
        //当在泛型类中写泛型方法时候,这个泛型方法的数据类型不受对象不影响
        test.sellp("张三要睡觉");
        test.sellp(99);
        test.sellp('男');
        //所以要注意,如果要保证属于类型一致的话,在泛型类中就不要写泛型方法
    }
}
class  Test <T>{
​
    public void eat(T t){
        System.out.println(t);
    }
    public <T> void sellp(T t){//这个T和泛型类的T不是同一个
        System.out.println(t);
    }
}

1.3带有泛型的抽象类

语法格式:

abstract class 类名 <无意义的占位符>{
​
}

演示

public class Demo1 {
    public static void main(String[] args) {
        /**
         * int 的包装类 Integer
         * byte 的包装类 Byte
         * short 的包装类 Short
         * long 的包装类 Long
         * float 的包装类 Float
         * double 的包装类  Double
         * char  的包装类 Character
         * boolean 的包装类 Boolean
         *
         */
        //是int的包装类  就是代表的是int类型的数据
        TestA<Integer> testA = new TestA<>();
        testA.testA(66);
    }
}
abstract class A <T> {
    abstract void testA (T t);
}
//抽象类,暂时没有办法直接实例化,只能再写一个普通类去继承抽象类
//总结:继承了带有泛型的抽象类,那么继承类也需要有泛型!!!
class TestA<T> extends A<T> {
​
    @Override
    void testA(T t) {
        System.out.println(t);
    }
}

1.4带有泛型的接口

语法格式:



interface 接口名 <无意义的占位符>{
​
}

案例

public class Demo1 {
    public static void main(String[] args) {
        Test1<String> test1 = new Test1<>();
        test1.eat("晚上吃什么?");
​
    }
}
interface TestA <T> {
    void eat(T t);
}
class Test1 <T> implements TestA <T>{
    
    @Override
    public void eat(T t) {
        System.out.println(t);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值