package test;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.List;
public class test {
public static void main(String[] args) {
Class<person> dtoClass = person.class;
Field[] fields = dtoClass.getDeclaredFields();
for (Field field : fields ) {
judgeFieldType(field);
}
}
private static void judgeFieldType(Field field) {
String name = field.getName();
if (field.getGenericType() instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) field.getGenericType();
//判断具体类的类型
if (pt.getRawType().equals(List.class)) {
// 判断泛型类的类型
if (pt.getActualTypeArguments()[0].equals(String.class)) {
System.out.println(name + " is List<String>;");
} else if (pt.getActualTypeArguments()[0].equals(int.class)
|| pt.getActualTypeArguments()[0].equals(Integer.class)) {
System.out.println(name + " is List<int>;");
}
}
}else if (field.getGenericType().equals(String.class)) {
System.out.println(name + " is String;");
} else if (field.getGenericType().equals(int.class) || field.getGenericType().equals(Integer.class)) {
System.out.println(name + " is int;");
}
}
}
package test;
import java.util.List;
public class person {
public String name;
public int age;
public List<String> cord;
public List<Integer> meter;
}
分享到:
相关推荐
在.NET框架中,`List<T>`是一个常用的泛型集合类,它提供了许多便利的方法来操作和查询元素。本文将深入探讨`Exists`和`Contains`这两个方法,它们都是用来检查`List<T>`中是否存在特定元素,但有各自的特点和适用...
ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(2); list.add(3); list.add(4); list.add(4); list.add(5); System.out.println("去重后的列表: " + removeDuplicates...
List<Integer> intList = new ArrayList<>(); Integer x = intList.get(0); // 自动类型转换 ``` 然而,如果类型不匹配,这可能导致运行时错误,即 `ClassCastException`。为了避免这种错误,有时我们需要显式地...
List<String> flavors = new ArrayList<>(); Collections.addAll(flavors, "Peaches'nPlutonium", "RockyRacoon"); ``` 此例中,`flavors`列表将被填充上指定的字符串元素。 #### 2. `asLifoQueue` 此方法将`...
标题"dotnet C# 使用 EqualityComparer 提升泛型值类型相等判断性能"指向的是如何通过`EqualityComparer<T>`来优化C#代码中的泛型值类型(如int, struct等)的相等性检查,以提高程序性能。下面将详细阐述`...
当我们实例化泛型类时,需要提供具体的类型,如 `List<Integer>`,这样就确保了列表中的元素只能是整数类型。 泛型与子类继承息息相关,泛型类的子类也可以指定自己的类型参数,但必须遵循父类的约束。例如,如果 `...
下面是一个Java方法,它接受两个泛型List参数`<T extends Comparable<T>>`,这意味着List中的元素需要实现Comparable接口,以便我们可以进行排序操作: ```java public static <T extends Comparable<T>> boolean ...
static void copyArrayToList(Object[] os,List<T> ls){ //错误,T为类的泛型 } static <E> void copyArrayToList(E[] os,List<E> ls){ //泛型方法,正确的 } 泛型不能使用...
例如,假设有一个泛型类`Container<T>`,我们可以创建一个子类`NumberContainer`来限定类型`T`必须是`Number`的一个子类型: ```java public class NumberContainer extends Container<Number> {} ``` 这样,`...
- 泛型集合:`List<String> list = new ArrayList<>();` 使用泛型时,可以限制集合中存储的元素类型,避免了强制类型转换,并且编译器会检查类型安全。 ```java public class GenericExample { public static ...
1. **类型参数化:** 泛型允许我们在定义集合类时指定一个或多个类型参数,如`List<T>`,这里的`T`就是一个类型参数,代表某种具体的类型。 2. **类型擦除:** Java的泛型是伪泛型,因为Java虚拟机(JVM)并不直接...
例如,如果有一个泛型类`BaseClass<T>`,子类可以声明为`class DerivedClass extends BaseClass<T>`。这样做意味着子类的所有实例都可以接受任何类型的T,与父类保持一致。 2. **指定父类的泛型参数**:子类可以...
Java 7引入了类型推断的钻石操作符 `<>`,简化了泛型实例化的语法,如`List<String> listOfStrings = new ArrayList<>();`。这使得编译器能够自动推断出泛型的具体类型。 此外,`void`类型的Lambda表达式在Java中也...
在Java中,泛型类不能继承java.lang.Throwable类,这是因为泛型类的类型参数无法确定抛出异常的类型,从而无法进行具体的异常处理逻辑。 四、泛型类不能初始化一个数组 在Java中,泛型类不能初始化一个数组,例如...
在Java中,我们采用面向接口编程的方式,设计了一个泛型接口`linearList<T>`,它包含与C++中的`linearList`相同的方法。接着,我们创建了一个`doubleChainNode<T>`类来表示节点,它与C++中的结构体类似,存储数据...
Java泛型是自Java SE 5.0引入的一项重要特性,极大地增强了代码的类型安全性和重用性。泛型在编程中的应用广泛,特别是在集合框架、数据结构(如栈Stack)和其他容器类的设计中。本篇文章将深入探讨如何在Java中使用...
- 常见的函数式接口包括`Predicate<T>`(用于判断T类型的数据是否满足某种条件)、`Function<T,R>`(用于将T类型的数据转换为R类型的数据)、`Consumer<T>`(用于消费T类型的数据)等。 3. **流(Stream API)**:...
- **示例**: 使用泛型类和接口,如`List<T>`、`Comparator<T>`等。 #### 集合的迭代 - **概述**: 迭代是指遍历集合中的元素。 - **`Iterator`**: `Iterator`接口提供了遍历集合的基本方法,包括`hasNext()`和`...
List<String> list = new ArrayList<>(); // 在运行时,List<String> 和 List<Integer> 都被视为 List ``` 5. **增强的for循环**:使用增强的for循环可以直接遍历集合中的元素,而无需显式地进行类型转换。 ```...