java 如何取泛型类的参数列表

java 如何取泛型类的参数列表,第1张

可以使用java的迭代器 Iterator<E> ,具体的参考api文档 下面的是<我的项目代码一小块>

String permMethod = "";

Iterator<String> iteratorPM = permFunciterator();

for (; iteratorPMhasNext();) {

permMethod += iteratorPMnext();

permMethod += ",";

}

可以使用for循环 <我的项目代码一小块>

for (Organization organ : orgList) {

if (oi != 0) {

orgSbappend(",");

}

orgSbappend(organgetOrgId());

oi++;

}

List<ReadyTask> list; 

for(ReadyTask rt:list){

    if(rtgetUserInfoId=userInfoId){ 

         rtgetClientName();

         rtgetClientAddress();  

   

     }  

}

获得方法的代码如下,字段的类似

/

  Project Name [online-courses]

  File Name      [day02genericGenericDemo5java]

  Creation Date  [2016-11-23]

  <p>

  Copyright© 2016 geyyang@hotmailcom All Rights Reserved

  <p>

  Work hard, play harder, think big and keep fit

 /

package day02generic;

import javalangreflectMethod;

import javalangreflectParameterizedType;

import javalangreflectType;

import javautilList;

/

  泛型示例-使用反射获取泛型类型<br />

 

  @author <a href="mailto:geyyang@hotmailcom">杨舸</a>

  @version 100

  @since jdk 18

 /

public final class GenericDemo5 {

    public void testGenericReflection(List<String> list) {

    }

    /

      测试方法<br />

     

      @param args 命令行参数

      @throws Exception 抛出的异常

     /

    public static void main(String[] args) throws Exception {

        Method method = GenericDemo5classgetMethod("testGenericReflection", Listclass);

        Type[] parameterTypes = methodgetGenericParameterTypes();

        ParameterizedType parameterType = (ParameterizedType) parameterTypes[0]; // 获得第一个泛型参数, Collection类型的集合只有一个泛型参数, Map类型的集合有两个泛型参数

        Systemoutprintln(parameterTypegetRawType()); // interface javautilList

        Systemoutprintln(parameterTypegetTypeName()); // javautilList<javalangString>

        Systemoutprintln(parameterTypegetActualTypeArguments()[0]); // class javalangString

    }

}

Java的泛型就是创建一个用类型作为参数的类。就象我们写类的方法一样,方法是这样的method(String str1,String str2 ),方法中参数str1、str2的值是可变的。而泛型也是一样的,定义泛型 一般用 T 表示 public <T> List<T> method(T t){ 方法体} 。它的参数 就是 T 一个类型,你传什么类型的对象,T就是什么类型。

T将是 可变的类型。

如:List<String> list = new ArrayList<String>(); listadd("1");

listadd("2");

采用泛型写法后,list想加入一个Integer类型的对象时会出现编译错误,通过List<String>,直接限定了list集合中只能含有String类型的元素,从而在后续如果进行for循环就无须进行强制类型转换,因为此时,集合能够记住元素的类型信息,编译器已经能够确认它是String类型了。

首先做一个接口,接口中声明需要的取值方法

然后做你要的实际的类,每个类实现不同的取值方法

然后list通过接口进行定义,将每个实际类的对象insert到list中间

然后利用多态实现动态的方法绑定,实现你的需求

泛型可以用"<T>"代表,任意类型的。

解释: “<T>”是泛型的默认值,可以被任意类型所代替,如:

List<String> list = new ArayList<String>();这个就定义了一个String类型的”泛型“集合,那么T的类型就是字符串。

List<T> list = new ArayList<T>();

可以赋值给list:listadd("StringBatch");

可以获取到list的值:listget(0),结果就是”StringBatch“;

这个时候T的类型也是String。也就是说T是动态的,可以被任意指定类型。

答案是肯定的!

public class Demo01<E> {

private List<E> list = new ArrayList<E>();

public List<E> store(E[] arr){

list = ArraysasList(arr);

return list;

}

public static void main(String[] args) {

Demo01<String> d = new Demo01<>();

String animals[] = {"Cat","Dog","Pig","Monkey"};

List<String> list = dstore(animals);

for (String string : list) {

Systemoutprint(string + "\t");

}

}

}

以上就是关于java 如何取泛型类的参数列表全部的内容,包括:java 如何取泛型类的参数列表、JAVA List<ReadyTask>自定义泛型如何取值、如何获得当前类的字段,方法参数泛型的类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9507860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存