当前位置: 首页 > 面试题库 >

Java泛型T与对象

傅安宁
2023-03-14
问题内容

我想知道以下两个方法声明之间有什么区别:

public Object doSomething(Object obj) {....}

public <T> T doSomething(T t) {....}

有什么可以/可以做的,而不是另一种?我在本网站的其他地方找不到这个问题。


问题答案:

与上下文隔离-没有区别。在t和两者上,obj您只能调用的方法Object

但是有上下文-如果您有泛型类:

MyClass<Foo> my = new MyClass<Foo>();
Foo foo = new Foo();

然后:

Foo newFoo = my.doSomething(foo);

与对象相同的代码

Foo newFoo = (Foo) my.doSomething(foo);

两个优点:

  • 无需强制转换(编译器向您隐藏了此内容)
  • 编译有效的时间安全性。如果使用的是Object版本,则不能确保方法始终返回Foo。如果返回,则在运行时Bar会有一个ClassCastException


 类似资料:
  • 本文向大家介绍Java泛型 T与T的使用方法详解,包括了Java泛型 T与T的使用方法详解的使用技巧和注意事项,需要的朋友参考一下 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。 在集合框架(Collec

  • 问题内容: 我有一堂课 具有通用属性 有更好的方法来执行以下操作吗? 即以不同的形式返回泛型? 精度,我使用Gson作为反序列化器,以获取列表,然后每个Data对象都可以是异构的 。还可以注册适配器以进行浮点和长检测,但不会更快或更漂亮 编辑 :gson无法检索多头: 要么: java.lang.Double无法转换为java.lang.Long 要么 java.lang.NumberFormat

  • 我有一个类<代码>数据 具有泛型属性 有没有更好的方法来做以下事情? 即以不同的形式返回泛型类型? Precision,我使用Gson作为反序列化器,以获得一个列表,每个数据对象可以是异构的< br >也可以注册适配器进行浮点和长整型检测,但它不会更快或更好 编辑:gson无法检索longs: 或者: java.lang.Double不能java.lang.Long 或 java.lang.Num

  • 我在学院有一些工作,我们必须按照给定的模块实现通用代码。 所以我正在创建一个只接受、、和的类 我看了一些关于泛型的youtube视频,也很理解,但我的代码中有一个问题,我在任何地方都找不到解决方案。 这是我的课: 在getResultAslong方法中,它应该采用长数据类型,但我有一个问题,即不能使用*操作数。问题是什么?

  • 现在,当我在地图上迭代时…我能以某种方式获得每个Class1对象的类型(K,V)吗??

  • 我正在尝试构建一个通用方法,该方法将调用任何特定于API的endpoint,每个endpoint都返回自己的对象类型。 以上操作不起作用(失败,出现空指针异常) 还尝试了这个: 这失败了: 我已经看到了一种可能的解决方案,通过传入所需类的虚拟对象,但这不是一个理想的选择,因为它需要添加类型参数并向下传递一长串调用。 不知道这将如何工作。