`

java 动态判断List<T>(泛型类)的具体类型

    博客分类:
  • Java
阅读更多
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;

}
分享到:
评论

相关推荐

    转 关于List<T>中的Exists 和Contains的区别

    在.NET框架中,`List&lt;T&gt;`是一个常用的泛型集合类,它提供了许多便利的方法来操作和查询元素。本文将深入探讨`Exists`和`Contains`这两个方法,它们都是用来检查`List&lt;T&gt;`中是否存在特定元素,但有各自的特点和适用...

    1.泛型类 、通配符的使用、通配符的上限和下限 编写泛型类Stack<E>,该类中定义一个成员变量和如下方法:

    ArrayList&lt;Integer&gt; list = new ArrayList&lt;&gt;(); 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...

    Java泛型指南

    List&lt;Integer&gt; intList = new ArrayList&lt;&gt;(); Integer x = intList.get(0); // 自动类型转换 ``` 然而,如果类型不匹配,这可能导致运行时错误,即 `ClassCastException`。为了避免这种错误,有时我们需要显式地...

    collections方法集合

    List&lt;String&gt; flavors = new ArrayList&lt;&gt;(); Collections.addAll(flavors, "Peaches'nPlutonium", "RockyRacoon"); ``` 此例中,`flavors`列表将被填充上指定的字符串元素。 #### 2. `asLifoQueue` 此方法将`...

    dotnet C# 使用 EqualityComparer 提升泛型值类型相等判断性能.rar

    标题"dotnet C# 使用 EqualityComparer 提升泛型值类型相等判断性能"指向的是如何通过`EqualityComparer&lt;T&gt;`来优化C#代码中的泛型值类型(如int, struct等)的相等性检查,以提高程序性能。下面将详细阐述`...

    Java1.5泛型指南中文版

    当我们实例化泛型类时,需要提供具体的类型,如 `List&lt;Integer&gt;`,这样就确保了列表中的元素只能是整数类型。 泛型与子类继承息息相关,泛型类的子类也可以指定自己的类型参数,但必须遵循父类的约束。例如,如果 `...

    Java比较两个List的值是否相等的方法

    下面是一个Java方法,它接受两个泛型List参数`&lt;T extends Comparable&lt;T&gt;&gt;`,这意味着List中的元素需要实现Comparable接口,以便我们可以进行排序操作: ```java public static &lt;T extends Comparable&lt;T&gt;&gt; boolean ...

    \java超强笔记(超级经典)

    static void copyArrayToList(Object[] os,List&lt;T&gt; ls){ //错误,T为类的泛型 } static &lt;E&gt; void copyArrayToList(E[] os,List&lt;E&gt; ls){ //泛型方法,正确的 } 泛型不能使用...

    Generic in java programming language

    例如,假设有一个泛型类`Container&lt;T&gt;`,我们可以创建一个子类`NumberContainer`来限定类型`T`必须是`Number`的一个子类型: ```java public class NumberContainer extends Container&lt;Number&gt; {} ``` 这样,`...

    JAVA 面向对象程序设计第8章 内部类和泛型.pptx

    - 泛型集合:`List&lt;String&gt; list = new ArrayList&lt;&gt;();` 使用泛型时,可以限制集合中存储的元素类型,避免了强制类型转换,并且编译器会检查类型安全。 ```java public class GenericExample { public static ...

    565.563.JAVA基础教程_泛型与File-为什么要使用泛型(565).rar

    1. **类型参数化:** 泛型允许我们在定义集合类时指定一个或多个类型参数,如`List&lt;T&gt;`,这里的`T`就是一个类型参数,代表某种具体的类型。 2. **类型擦除:** Java的泛型是伪泛型,因为Java虚拟机(JVM)并不直接...

    JAVA泛型的继承和实现、擦除原理解析

    例如,如果有一个泛型类`BaseClass&lt;T&gt;`,子类可以声明为`class DerivedClass extends BaseClass&lt;T&gt;`。这样做意味着子类的所有实例都可以接受任何类型的T,与父类保持一致。 2. **指定父类的泛型参数**:子类可以...

    Java类型检查,类型推断以及限制.pdf

    Java 7引入了类型推断的钻石操作符 `&lt;&gt;`,简化了泛型实例化的语法,如`List&lt;String&gt; listOfStrings = new ArrayList&lt;&gt;();`。这使得编译器能够自动推断出泛型的具体类型。 此外,`void`类型的Lambda表达式在Java中也...

    解析Java 泛型什么情况下不能使用

    在Java中,泛型类不能继承java.lang.Throwable类,这是因为泛型类的类型参数无法确定抛出异常的类型,从而无法进行具体的异常处理逻辑。 四、泛型类不能初始化一个数组 在Java中,泛型类不能初始化一个数组,例如...

    带头结点的双向循环链表数据结构

    在Java中,我们采用面向接口编程的方式,设计了一个泛型接口`linearList&lt;T&gt;`,它包含与C++中的`linearList`相同的方法。接着,我们创建了一个`doubleChainNode&lt;T&gt;`类来表示节点,它与C++中的结构体类似,存储数据...

    ClasesGenericas:使用Java中的泛型类和泛型方法显示了Stack的应用

    Java泛型是自Java SE 5.0引入的一项重要特性,极大地增强了代码的类型安全性和重用性。泛型在编程中的应用广泛,特别是在集合框架、数据结构(如栈Stack)和其他容器类的设计中。本篇文章将深入探讨如何在Java中使用...

    java编程的逻辑(高清百度盘)

    - 常见的函数式接口包括`Predicate&lt;T&gt;`(用于判断T类型的数据是否满足某种条件)、`Function&lt;T,R&gt;`(用于将T类型的数据转换为R类型的数据)、`Consumer&lt;T&gt;`(用于消费T类型的数据)等。 3. **流(Stream API)**:...

    达内java课程-java核心编程10天

    - **示例**: 使用泛型类和接口,如`List&lt;T&gt;`、`Comparator&lt;T&gt;`等。 #### 集合的迭代 - **概述**: 迭代是指遍历集合中的元素。 - **`Iterator`**: `Iterator`接口提供了遍历集合的基本方法,包括`hasNext()`和`...

    Collections & Generics in J2SE 1.5

    List&lt;String&gt; list = new ArrayList&lt;&gt;(); // 在运行时,List&lt;String&gt; 和 List&lt;Integer&gt; 都被视为 List ``` 5. **增强的for循环**:使用增强的for循环可以直接遍历集合中的元素,而无需显式地进行类型转换。 ```...

Global site tag (gtag.js) - Google Analytics