获取Class类型的对象的三种方式
时间: 2023-04-06 07:03:41 浏览: 75
可以使用以下三种方式获取Class类型的对象:
1. 使用类名.class语法:例如,String.class返回String类的Class对象。
2. 使用对象的getClass()方法:例如,"hello".getClass()返回String类的Class对象。
3. 使用Class.forName()方法:例如,Class.forName("java.lang.String")返回String类的Class对象。
相关问题
spring创建的对象有几种获取方式
在Spring中,我们可以通过以下几种方式来获取创建的对象:
1.通过名称获取:使用bean的id或name属性获取。例如:`context.getBean("beanId")`。
2.通过类型获取:使用bean的class属性获取。例如:`context.getBean(BeanClass.class)`。
3.通过名称和类型获取:使用bean的id和class属性获取。例如:`context.getBean("beanId", BeanClass.class)`。
4.通过自定义标记获取:使用自定义的标记获取bean。例如:`context.getBean("myBean", MyBean.class)`。
5.通过注解获取:使用注解获取bean。例如:`@Autowired`或`@Resource`等注解。
其中,第一种和第二种方式是最常用的获取bean的方式,但是在某些情况下,我们需要根据名称和类型来获取bean,或者使用自定义标记或注解来获取bean。无论采用哪种方式,Spring都会自动帮我们创建并管理好对象的生命周期。
java获取泛型T的class对象
Java中获取泛型T的class对象的方法有以下几种:
1. 在类定义时指定泛型类型,直接使用泛型类的class对象即可。
```java
public class MyGenericClass<T> {
private Class<T> clazz;
public MyGenericClass(Class<T> clazz) {
this.clazz = clazz;
}
public Class<T> getClazz() {
return clazz;
}
}
```
2. 使用泛型方法,通过反射获取方法的返回类型,从而得到泛型T的class对象。
```java
public class MyGenericClass {
public static <T> Class<T> getGenericType(Class<?> clazz) {
Type superClass = clazz.getGenericSuperclass();
if (superClass instanceof ParameterizedType) {
Type[] types = ((ParameterizedType) superClass).getActualTypeArguments();
if (types.length > 0 && types[0] instanceof Class) {
return (Class<T>) types[0];
}
}
return null;
}
}
```
3. 使用TypeReference类,它是FastJson库中的一个工具类,可以获取泛型T的class对象。
```java
public abstract class TypeReference<T> {
private final Type type;
protected TypeReference() {
Type superClass = getClass().getGenericSuperclass();
type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
}
public Type getType() {
return type;
}
}
```
使用时只需要继承TypeReference类,并实现泛型T的具体类型。
```java
public class MyGenericClass extends TypeReference<List<String>> {
public MyGenericClass() {
System.out.println(getType()); // class java.util.List<java.lang.String>
}
}
```