17.泛型

  1. 17.泛型
    1. 17.1 知识点
      1. Java中泛型
      2. 泛型基本用法
      3. Java中的泛型限制(泛型约束)
      4. 泛型中的类型通配符 ?
      5. 总结
    2. 17.2 知识点代码
      1. Lesson_17Test
      2. Lesson17_泛型

17.泛型


17.1 知识点

Java中泛型

Java中泛型使用的基本规则和C#中一致。泛型可以代表一切类型,主要使用上就是泛型类和泛型方法。主要区别如下:

  • 泛型方法写法用法不同
  • 泛型约束不同
  • 泛型类型通配符
  • 一些基础类型必须写他们的包装类名,不能写变量类型

泛型基本用法

public class Lesson_17Test<T> {
    public T testValue;

    public T TestFun(T t) {
        return null;
    }

    // Java中的泛型方法 是写到访问修饰符后面的 C#是在方法后的
    public <K> void TestFun2(K k) {

    }
}

泛型类和泛型方法使用示例:

// 泛型类和泛型方法
Lesson_17Test<Float> ob = new Lesson_17Test<>();// 假如约束了就可能报错
ob.testValue = 11f;
ob.TestFun(15f);

// Java当中的泛型方法的调用 和普通方法调用没什么区别
// 用什么类型传什么类型即可 都不需要指明类型 C#中是要<>传的,也可以省略
ob.TestFun2("123");

Java中的泛型限制(泛型约束)

public class Lesson_17Test<T extends Lesson17_TestFather> {}

T extends 类名或接口名:表示泛型类型必须是或者继承某一个类或接口。

示例:

Lesson_17Test<Lesson17_TestSon> obj = new Lesson_17Test<>();

泛型中的类型通配符 ?

// 泛型类名称<? extends 类名> 变量名 = null;
// ? extends 类名 表示类未知,需要使用该泛型对象时,可以单独实例化
Lesson_17Test<?> obj2 = null;
obj2 = new Lesson_17Test<Lesson17_TestSon>();
obj2 = new Lesson_17Test<Lesson17_TestFather>();

总结

Java中泛型和C#中使用规则上基本相同。主要区别是:

  • 泛型方法写法和使用不同
  • 泛型约束不同
  • 泛型类型通配符 ?
  • 一些基础类型必须写他们的包装类名,不能写变量类型

17.2 知识点代码

Lesson_17Test

public class Lesson17_Test<T extends Lesson17_TestFather> {
    public T testValue;

    public T TestFun(T t)
    {
        return null;
    }

    //Java中的泛型方法 是写到访问修饰符后面的 C#是在方法后的
    public<K> void TestFun2(K k)
    {

    }
}

Lesson17_泛型

public class Lesson17_泛型
{
    public static void main(String[] args)
    {
        //知识点1:Java中泛型
        //Java中泛型使用的基本规则和C#中一致
        //泛型可以代表一切类型,主要使用上就是泛型类和泛型方法
        //主要区别如下
        //1.泛型方法写法用法不同
        //2.泛型约束不同
        //3.泛型类型通配符
        //4.一些基础类型必须写他们的包装类名,不能写变量类型


        //知识点2:泛型基本用法
        //泛型类和泛型方法
        //Lesson_17Test<Float> ob = new Lesson_17Test<>();//假如约束了就可能报错
        //ob.testValue = 11f;
        //ob.TestFun(15f);

        //Java当中的泛型方法的调用 和普通方法调用没什么区别
        //用什么类型传什么类型即可 都不需要指明类型 C#中是要<>传的,也可以省略
        //ob.TestFun2("123");


        //知识点3:Java中的泛型限制(泛型约束)
        //T extends 类名或接口名:表示泛型类型必须是或者继承某一个类或接口
        Lesson17_Test<Lesson17_TestSon> obj = new Lesson17_Test<>();


        //知识点4:泛型中的类型通配符 ?
        //泛型类名称<? extends 类名> 变量名 = null;
        //? extends 类名 表示类未知,需要使用该泛型对象时,可以单独实例化
        Lesson17_Test<?> obj2 = null;
        obj2 = new Lesson17_Test<Lesson17_TestSon>();
        obj2 = new Lesson17_Test<Lesson17_TestFather>();


        //总结
        //Java中泛型和C#中使用规则上基本相同
        //主要区别是
        //1.泛型方法写法和使用不同
        //2.泛型约束不同
        //3.泛型类型通配符 ?
        //4.一些基础类型必须写他们的包装类名,不能写变量类型
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏