Java中的Object、T(泛型)、?区别

Java中的Object、T(泛型)、?区别

我们先来试着理解一下Object类,学习Java的应该都知道Object是所有类的父类,注意:那么这就意味着它的范围非常广!首先记住这点,如果你的参数类型时Object,那么的参数类型将非常广!

《Thinking in Java》中说很多原因促成了泛型的出现,最引人注目的一个原因就是为了创造容器类。这个要怎么来理解呢?我的理解是,可以抛开这个为了创造容器类这个,而是回到泛型的目的是限定某种类型上来。

所以我们现在能小结一下Object和T很重要的两点区别就是:

  1. Object范围非常广,而T从一开始就会限定这个类型(包括它可以限定类型为Object)。
  2. Object由于它是所有类的父类,所以会强制类型转换,而T从一开始在编码时(注意是在写代码时)就限定了某种具体类型,所以它不用强制类型转换。(之所以要强调在写代码时是因为泛型在虚拟机中会被JVM擦除掉它的具体类型信息,这点可参考泛型,在这里不做引申)。

比如在jdk中的List类是个泛型类。现在我们制定它的类型是Object。

       List<Object> list = new ArrayList<Object>();
        int i = 0;
        String s = "s";
        list.add(i);
        list.add(s);

List本身是个泛型类,现在我们指定它接收Object类型的参数,此时就可以放置任意类型的参数进去,而在取出来是就必须得进行强制类型转换成具体的类型。

现在我们如果将List指定接收String类型的参数,那么这个List就只能放置String类型,且取出来时就不用进行强制类型转换。

这点给我们带来的启示是,在编写类似List类的时候,一定要注意是否用泛型。一定要多写几个泛型类,多讨论多理解,不然还是可能会搅在一起。


 接着是?,这个可能在用到反射需要获取Class类型时用到,它的解释就是:接收一个不确定的类型,有点和Object一样。我对它一个理解是,如果只用"?"那么它和Object是一样的,但是"?"有比Object稍微“高级”有点的用法,就是它能缩小一个不确定的范围,利用类似"? extends Test",这就意味着只接收接收Test类的继承类,是不是比Object的范围缩小了?

https://www.cnblogs.com/yulinfeng/p/6056038.html

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
,`object` 是一个通用的类参数,表示可以接受任何类的对象。 是一种编程机制,用于在编译时期实现类安全。通过使用,我们可以编写适用于多种类的代码,而不需要为每种类重复编写相同的代码。 当我们将 `object` 作为参数时,它表示可以接受任何类的对象作为实参。这意味着我们可以使用方法或类来处理不同类的数据,而不需要为每种类编写不同的方法或类。 例如,考虑以下使用的示例代码: ```java public class GenericClass<T> { private T value; public void setValue(T value) { this.value = value; } public T getValue() { return value; } } public static void main(String[] args) { GenericClass<String> stringGeneric = new GenericClass<>(); stringGeneric.setValue("Hello"); String stringValue = stringGeneric.getValue(); GenericClass<Integer> integerGeneric = new GenericClass<>(); integerGeneric.setValue(10); int integerValue = integerGeneric.getValue(); } ``` 在上面的例子,`GenericClass<T>` 是一个类,`T` 是类参数。当我们实例化 `GenericClass` 对象时,我们可以指定 `T` 的具体类。在第一个示例,我们将 `T` 设置为 `String` 类,而在第二个示例,我们将 `T` 设置为 `Integer` 类。通过使用,我们可以在编译时期获得类安全,并且可以重用相同的代码来处理不同类的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值