new 一个对象时如何获得泛型?

本文探讨了在Java中如何通过getGenericSuperclass()方法获取父类的泛型参数,并提出了一个问题:是否可以在对象实例已存在的基础上获取其泛型信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般通常用 ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
也就是 getGenericSuperclass() 方法去拿泛型 ,通过名字我们的得知,这个拿的是 父对象的泛型 super class generic
自然 理论上在 new时 是无法的得到泛型的。。。。
不过话又说出来 如果 这个实现方式是 基于回调的,那么通过回调 时这个实例已经存在了 可不可以拿 这个对象的泛型呢?

呵呵 还望还望指点下,个人觉得通过某种手段是可以拿到的,等我 斟酌出来时 再帖出来哈哈
做下广告
[url=http://www.sharpRen.com]欢迎访问 犀利人社区 sharpRen.com[/url]
[url=http://blog.sharpRen.com]欢迎访问 犀利人博客 blog.sharpRen.com[/url]
[url=http://java.sharpRen.com]欢迎访问 犀利人java论坛 java.sharpRen.com[/url]

[img]http://www.sharpren.com/images/wind/logo.png[/img]
### 回答1: 类是一种通用的类,可以操作不同类的数据,而不需要为每种类都编写一个新的类。通过类,可以将数据类作为参数传递,并且在使用时才确定数据类。 定义类的语法格式如下: ``` class ClassName<T> { // T 可以替换成任何有效的标识符 T obj; // 构造函数 ClassName(T obj) { this.obj = obj; } // 方法 public T getObject() { return this.obj; } } ``` 在上面的代码中,`T` 是参数,可以用任何有效的标识符替换。在类的构造函数和方法中,可以使用 `T` 来声明变量类,这个类在实例化类时才会确定。 使用类时,需要在类名称后面加上尖括号,并在括号中指定具体的数据类,例如: ``` ClassName<Integer> obj = new ClassName<Integer>(123); ``` 这里,`Integer` 是具体的数据类,用于替换参数 `T`,创建了一个类的实例。在实例化时,可以传入任何与参数相同的数据类类的好处是可以提高代码的重用性和可读性,同时还可以避免类转换错误。 ### 回答2: 类是一种在编程中广使用的概念,它允许在定义类时,使用一种或多种类参数来表示类中的某些成员变量、方法参数或返回值的类类能够提供更大的代码重用性和类安全性,因为它们可以适用于多种类,而不仅仅对特定类有效。 要定义类,需要在类名后面使用尖括号(<>)并在其中指定一个或多个类参数。例如,定义一个类名为"Box",表示其中的成员可以是任何类,可以这样写: ```java public class Box<T> { private T item; public void setItem(T item) { this.item = item; } public T getItem() { return item; } } ``` 在上面的例子中,T是类参数,它可以被任何类所代替。该类中的item成员变量和相关的方法都会使用到这个类参数。 使用类时,可以在创建对象时指定具体的类参数。例如: ```java Box<String> stringBox = new Box<>(); stringBox.setItem("Hello"); Box<Integer> integerBox = new Box<>(); integerBox.setItem(123); ``` 在上面的例子中,创建了一个Box对象,并指定了类参数为String和Integer。这意味着在该对象中,item变量的类分别为String和Integer,使用setItem方法时也只能传入和持有的类相匹配的值。 通过定义和使用类,我们可以实现更灵活、通用的类和方法,能够处理多种类的数据。类可以提高代码的可读性和可维护性,减少类转换的错误和异常,也能够在编译时发现一些类相关的错误。因此,类在现代编程语言中得到广应用。 ### 回答3: 类是指在定义类时使用类参数,以使得类的某些属性、方法、参数或返回值可以是不确定的类,从而提高代码的复用性和灵活性。 定义类时,使用尖括号<>来声明类参数,并在类名后面加上类参数的标识符。例如,定义一个类Box: ``` public class Box<T> { private T content; public Box(T content) { this.content = content; } public T getContent() { return content; } public void setContent(T content) { this.content = content; } } ``` 在使用类时,需要指定类参数的具体类。例如,创建一个存放整数的Box对象: ``` Box<Integer> intBox = new Box<>(10); ``` 这样,Box类中的content属性将被设置为整数类,可以调用getContent来获取该整数,也可以使用setContent来更改content的值。 类还可以在方法的参数和返回值中使用。例如,定义一个方法printBox,用于打印Box对象的内容: ``` public <T> void printBox(Box<T> box) { T content = box.getContent(); System.out.println(content); } ``` 在调用该方法时,需要指定Box对象的具体类: ``` Box<String> stringBox = new Box<>("Hello"); printBox(stringBox); ``` 这样,printBox方法会打印输出"Hello"。可以看到,由于使用了类,可以在不同的地方使用不同类的参数,提高了代码的灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值