Java中泛型和Object类型 初级进阶教程(一)

这篇具有很好参考价值的文章主要介绍了Java中泛型和Object类型 初级进阶教程(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在学习的过程中,常常看到某个类或者接口等中使用 List<T>, Test<T>,其中<T>的作用是什么呢?

1 在类中使用泛型

public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

// 使用泛型类
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello, Generics!");
String content = stringBox.getContent();
System.out.println(content);

2 使用多个泛型


//多个泛型
public class Pair<K, V> {
    private K key;
    private V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() {
        return key;
    }

    public V getValue() {
        return value;
    }
}

// 使用多个泛型参数的类
Pair<String, Integer> pair = new Pair<>("Age", 25);
String key = pair.getKey();
Integer value = pair.getValue();
System.out.println(key + ": " + value);

3 在类中使用泛型

public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

// 使用泛型类
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello, Generics!");
String content = stringBox.getContent();
System.out.println(content);

4 在方法中使用泛型

public class Utils {
    public static <T> T getLastElement(List<T> list) {
        if (list == null || list.isEmpty()) {
            return null;
        }
        return list.get(list.size() - 1);
    }
}

// 使用泛型方法
List<String> stringList = Arrays.asList("One", "Two", "Three");
String lastElement = Utils.getLastElement(stringList);
System.out.println(lastElement);

5 限制泛型类型

public class NumberBox<T extends Number> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

// 使用限制泛型类型的类
NumberBox<Integer> integerBox = new NumberBox<>();
integerBox.setContent(42);
Integer content = integerBox.getContent();
System.out.println(content);

6 通配符 (Wildcard)

public class Printer {
    public static void printList(List<?> list) {
        for (Object element : list) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
}

// 使用通配符
List<String> stringList = Arrays.asList("One", "Two", "Three");
List<Integer> integerList = Arrays.asList(1, 2, 3);

Printer.printList(stringList);
Printer.printList(integerList);

总结:泛型和Object类型之间的区别

  1. 类型安全:
    1. 泛型 T: 泛型提供了编译时类型检查,可以在编译时捕获一些类型错误。使用泛型时,你可以在代码中指定特定类型,而编译器会确保只能插入该类型的对象。这有助于在编译时发现潜在的类型错误,提高代码的安全性。

    2. Object: Object 不提供编译时类型检查,因此在运行时你可能会遇到类型转换异常。在使用 Object 时,你需要手动进行类型转换,并且编译器无法检查这些转换是否安全。

  2. 代码重用性:
    1. 泛型 T: 泛型提供了更好的代码重用性,因为你可以创建通用的、与特定类型无关的代码。这使得代码更加灵活,可以适用于多种数据类型。

    2. Object: 当你使用 Object 时,你需要在每次使用时进行强制类型转换,这可能导致代码重复,并且使得代码更难以维护和理解。

  3. 集合类型:
    1. 泛型 T: 在集合类中使用泛型可以避免类型转换,并提供更强的类型安全性。例如,List<T> 可以存储指定类型的元素,而不需要强制类型转换。

    2. Object: 在早期版本的Java中,集合类只能存储 Object 类型的元素,需要在取出元素时进行强制类型转换,容易引发运行时异常。

  4. 灵活性:
    1. 泛型 T: 泛型提供了更灵活的类型参数化,可以在类、接口、方法级别使用。你可以为不同的上下文提供不同的类型参数。

    2. Object: Object 是所有类的父类,但它没有提供灵活的类型参数化。文章来源地址https://www.toymoban.com/news/detail-788989.html

到了这里,关于Java中泛型和Object类型 初级进阶教程(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 编程中泛型的使用规则和限制是什么?

    泛型是一种程序设计风格,它允许程序员在编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。泛型主要用于实现通用的数据结构,例如集合、映射、列表等,使得这些数据结构可以存储多种类型的元素。 在泛型使用之前,程序员需要自己指定数据类

    2023年04月24日
    浏览(39)
  • rust学习-泛型和trait

    Option,Vec,HashMapK, V,ResultT, E等,取函数以减少代码重复的机制 两个函数,不同点只是名称和签名类型 重写如下 为所有类型的结构体提供方法 只为f32提供方法 方法使用了与结构体定义中不同类型的泛型 Rust 实现了泛型,使得使用泛型类型参数的代码相比使用具体类型并没

    2024年02月17日
    浏览(41)
  • Kotlin(十七) 泛型和委托

    泛型的基本用法 泛型主要有两种定义方式:一种是定义泛型类,另一种是定义泛型方法,使用的语法结构都是 T 。当然括号内的 T 并不是固定要求的,事实上你使用任何英文字母或单词都可以,但是通常情况下, T 是一种约定俗成的泛型写法。 定义一个泛型类,示例如下:

    2024年02月04日
    浏览(39)
  • go-easy-utils 2.0 正式发布,全面支持泛型和any

    这是一个基于 Go 语言开发的通用数据类型处理工具类,帮助开发者在业务代码实现中处理常见的数据类型和数据操作。可以让您专注于您的业务代码的实现,而免去处理基本数据类型转换和验证的功能。该工具库无侵入式的设计可以让您的业务代码更容易阅读和优雅。 安装

    2023年04月13日
    浏览(36)
  • 用可视化案例讲Rust编程4. 用泛型和特性实现自适配shapefile的读取

    本节已经涉及Rust学习曲线上的一个大坑:泛型和特性了,属于语言的深水区,如果初学者,建议看一眼知道有这个功能即可。 如果我们立足于功能实现,那么做到像上一节那样就可以了,从原理上来说,每个函数满足唯一的功能,是一种好的设计,软件工程里面“高内聚低

    2024年01月25日
    浏览(38)
  • Java获取泛型类型信息

    根据使用泛型位置的不同可以分为:声明侧泛型、使用侧泛型。 声明侧的泛型信息被记录在Class文件的Constant pool中以Signature的形式保存。而使用侧的泛型信息并没有保存。 声明侧泛型 声明侧泛型包括: 泛型类,或泛型接口的声明 带有泛型参数的成员变量 带有泛型参数的方

    2024年02月09日
    浏览(37)
  • Java泛型:灵活多变的类型参数化工具

    👑专栏内容:Java ⛪个人主页:子夜的星的主页 💕座右铭:前路未远,步履不停 在传统的编程方法中,类和方法通常被限定为使用特定的类型。这些类型可能是基础的数据类型(如整数、字符等),或者是由程序员自己定义的复杂类型。这种方式在处理单一类型数据时很有

    2024年02月01日
    浏览(59)
  • 初级Java必看的数据类型与常量变量

    目录 一、Java的数据类型 1、数据类型细致划分 2、数据类型他是做什么的? 3、怎么用数据类型? 二、Java的常量与变量 Java常量 常量代表程序在运行过程中,不可再次改变的值; Java变量 知识总结         我们所学的Java,最基础的应该就是数据类型了,应该大部分计算机

    2024年01月19日
    浏览(57)
  • 【Java 基础篇】Java类型通配符:解密泛型的神秘面纱

    在Java中,类型通配符(Type Wildcard)是泛型的重要概念之一。它使得我们能够更加灵活地处理泛型类型,使代码更通用且可复用。本文将深入探讨Java类型通配符的用法、语法和最佳实践。 类型通配符是一个用问号 ? 表示的通配符,它可以用于泛型类、方法和通配符边界。类型

    2024年02月07日
    浏览(51)
  • 第8章-第1节-Java中的泛型(参数化类型)

    1、泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型? 2、概念:在类声明体中用到了类型参数。 3、泛型类只支持类类型,不支持基本数据类型(如int),但可以用包装类(如Integer ) 泛型标识 含义 T Type 类

    2024年01月23日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包