Java泛型T和Object

T表示不能确定具体类型,Object是超类。最直接的区别在于:当用T时,开发人员不用强转类型
如:public T exce(T t);
如果传入String,则T就是String,所以返回String类型。
但: public Object exce(Object o);
如果传入String, 则返回还是Object,需要自己强转成String ,这是有强制转换的风险的。
Java泛型`T`是一种类型安全机制,它允许你在创建对象、数组以及处理集合等数据结构时指定具体的类型。这可以防止将不兼容的数据类型赋值给变量,并减少了需要使用`Object`作为类型的情况。 ### 使用Java泛型的基本示例 #### 创建泛型类 ```java public class GenericBox<T> { private T item; public GenericBox(T item) { this.item = item; } // 提供访问和设置item的方法 public T getItem() { return item; } public void setItem(T item) { this.item = item; } } ``` 在这个例子中,`<T>`代表的是泛型参数,你可以将它替换为任意有效的Java类型名。例如: ```java GenericBox<String> stringBox = new GenericBox<>("Hello"); System.out.println(stringBox.getItem()); // 输出 "Hello" GenericBox<Integer> intBox = new GenericBox<>(42); System.out.println(intBox.getItem()); // 输出 42 ``` #### 使用泛型方法 泛型也可以用于方法声明,提供了一种类型安全的方式来操作不同类型的数据。 ```java import java.util.List; public class SafePrint { public static <T extends Comparable<T>> void safePrint(List<T> list) { for (T element : list) { System.out.println(element); } } public static void main(String[] args) { List<String> stringList = Arrays.asList("apple", "banana", "cherry"); safePrint(stringList); // 可以直接打印字符串列表 List<Integer> integerList = Arrays.asList(1, 2, 3); safePrint(integerList); // 同样可以直接打印整数列表 } } ``` 在这段代码中,`safePrint`方法接收一个实现了`Comparable`接口的泛型类型的列表,并能够安全地遍历并打印出其中的所有元素,无论它们是什么类型。 ### Java泛型的优势 - **类型安全**:避免了运行时类型转换错误。 - **简洁性**:不需要使用`Object`作为泛型参数,简化了代码编写和理解。 - **灵活性**:通过指定不同的泛型类型参数,可以适应多种需求场景。 ### 关联问题: 1. 在哪些情况下应该使用Java泛型而不是原始类型? 2. 如何避免在使用泛型时可能出现的类型擦除相关的问题? 3. 泛型如何影响Java的编译时类型检查?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值