首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从java反射中的方法获取"genericInfo“

从Java反射中获取"genericInfo"方法的步骤如下:

  1. 获取目标类的Class对象:可以使用Class.forName()方法传入目标类的全限定名,或者直接使用目标类.class获取。
  2. 获取目标方法的Method对象:通过调用Class对象的getMethod()方法,传入方法名和参数类型,可以获取到目标方法的Method对象。
  3. 获取方法的泛型信息:通过调用Method对象的getGenericReturnType()方法可以获取方法的返回值的泛型信息,通过调用getGenericParameterTypes()方法可以获取方法的参数类型的泛型信息。
  4. 解析泛型信息:通过对获取到的泛型信息进行解析,可以获取到具体的泛型类型。可以使用Java的Type接口及其实现类进行解析,如ParameterizedTypeTypeVariableWildcardType等。
  5. 获取泛型类型的具体信息:根据解析得到的泛型类型,可以获取到具体的泛型类型的信息,如类型名称、类型参数等。

以下是一个示例代码,演示如何从Java反射中获取"genericInfo"方法的泛型信息:

代码语言:txt
复制
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class ReflectionExample {
    public static void main(String[] args) throws NoSuchMethodException {
        Class<?> targetClass = TargetClass.class;

        Method method = targetClass.getMethod("genericInfo");

        Type returnType = method.getGenericReturnType();
        if (returnType instanceof ParameterizedType) {
            ParameterizedType parameterizedType = (ParameterizedType) returnType;
            Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
            for (Type typeArgument : actualTypeArguments) {
                System.out.println("Generic type: " + typeArgument.getTypeName());
            }
        }
    }
}

class TargetClass {
    public List<String> genericInfo() {
        return new ArrayList<>();
    }
}

以上代码中,我们通过getMethod()方法获取到了"genericInfo"方法的Method对象,然后通过getGenericReturnType()方法获取到了方法的返回值的泛型信息。接着,我们判断返回值的类型是否为ParameterizedType,如果是,则通过getActualTypeArguments()方法获取到具体的泛型类型。最后,我们打印出了泛型类型的名称。

请注意,以上示例代码仅为演示目的,实际应用中可能需要根据具体情况进行适当的异常处理和错误检查。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面试:说说Java射中获取Class对象三种方式区别?

在上篇文章《一篇文章全面了解Java反射机制》中我们学习了Java反射机制基本使用,留心朋友可能已经注意到了,在文中提到了三种获取Class对象方法。...如果面试中涉及到Java反射,那么遇到该面试题概率将大大增加。 以下三种获取Class对象方式有什么不同?...: Person:静态代码块 Person:动态代码块 Person:构造方法 也就是说通过Person.class方法获取对象Class对象,根本不会调用对象中任何代码块或代码。...类加载阶段是将class文件中二进制数据读取到内存中,然后将该字节流所代表静态存储结构转化为方法区中运行时数据结构,并且在堆内存中生成一个该类java.lang.class对象,作为方法区数据结构入口...原文链接:《面试:说说Java射中获取Class对象三种方式区别?》

1.8K30

Java获取年份月份方法

正确地处理日期时间对于确保应用程序准确性和可靠性至关重要。 1.2 文章目的与读者对象 本文旨在介绍Java获取年份和月份常用方法,并提供实际代码示例。...示例代码 为了更好地理解,以下是一些基础Java代码示例,展示如何获取当前年份和月份。...因此,在Java 8及以后版本中,推荐使用java.time包来处理日期和时间。 3. 获取年份和月份基础方法Java中,获取当前年份和月份可以通过多种方式实现。...它提供了简单方法获取年份和月份。...5.1 日历应用中年份月份显示 在日历应用中,通常需要显示当前年份和月份。以下是一个简单日历应用示例,展示如何使用LocalDate来获取并显示当前年份和月份。

9910

Java如何获取方法参数具体名称?这是个好问题!

默认情况下,我们是无法获取方法中参数名称。通过反射机制,也只能得到参数顺序以及一些没有意义变量:arg0、arg1等等。 但我们又确实需要这部分信息。...在JDK 8之后,可以通过在编译时指定-parameters选项,将方法参数名记入class文件,并在运行时通过反射机制获取相关信息。...不过不推荐这样,因为你这些配置不好进行共享。 ? 在普通Java项目里,就可以通过下面的方式来获取反射数据。Method.getParameters这个方法是新加。...版本低于1.8时候,又是怎么获取呢?...Java8以前,读取Class中LocalVariableTable属性表,需要编译时加入参数-g或者-g:vars 获取方法局部变量调试信息;Java8及其以后,通过java.lang.reflect.Parameter

4.1K30

java inputstream读取文件_java如何获取输入数据

其中read()方法是一次读取一个字节,鬼都知道效率是非常低。所以最好是使用后面两个方法。...e.printStackTrace(); } } 关于InputStream.read(byte[] b)和InputStream.read(byte[] b,int off,int len)这两个方法都是用来流里读取多个字节...,有经验程序员就会发现,这两个方法经常 读取不到自己想要读取个数字节。...仔细阅读JavaAPI说明就发现了,这个方法 并不保证能读取这么多个字节,它只能保证最多读取这么多个字节(最少1个)。...) { readCount += inStream.read(b, readCount, count - readCount); } 关于InputStream类available()方法 这个方法意思是返回此输入流下一个方法调用可以不受阻塞地从此输入流读取

2.5K20

java获取服务器路径_JAVA获取服务器路径方法「建议收藏」

大家好,又见面了,我是你们朋友全栈君。...1、在JSF环境中获取到ServletContext: 2、servlet中获得项目绝对路径 根目录所对应绝对路径 request.getServletPath(); 文件绝对路径 request.getSession...().getRealPath(“/”); 3、jsp中获取服务器路径 说明: contextPath =”/项目名称”; //获取是项目的相对路径 realPath = F:\tomcat_home\...webapps\项目名称\ //获取是项目的绝对路径 basePath = http://localhost:8080/项目名称/ //获取是服务访问地址 4、ServletContext对象获得几种方式...文件绝对路径 request.getSession().getServletContext().getRealPath(request.getRequestURI()) 当前web应用绝对路径 servletConfig.getServletContext

2.6K20

Java反射(通过反射获取结构、invoke方法获取注解)

方式一步骤: 1)获取该类型Class对象 2)调用Class对象newInstance()方法创建对象 方式2:通过获取构造器对象来进行实例化 方式二步骤: 1)通过Class类getDeclaredConstructor...获取运行时类完整结构 可以获取:包、修饰符、类型名、父类(包括泛型父类)、父接口(包括泛型父接口)、成员(属性、构造器、方法)、注解(类上方法、属性上)。....类所在包 Package getPackage() 2.2 获取所有的属性及相关细节 import java.lang.reflect.Field; import java.lang.reflect.Modifier...包括超类继承公共类和接口成员以及该类声明公共类和接口成员。 public Class<?...(1)获取该类型Class对象 Class clazz = Class.forName("包.类名"); (2)获取方法对象 Method method = clazz.getDeclaredMethod

3.5K91

WPF 键盘事件 KeyEventArgs 里获取 Scan Code 方法

本文将告诉大家如何在 WPF 里面,键盘事件 KeyEventArgs 参数里获取到 Scan Code 键盘按键设备独立标识符方法 概念: 以下来自 bing 答案 键盘 Scan Code...方法1: 推荐方法,通过 Win32 函数获取,代码实现如下 KeyDown += MainWindow_KeyDown; private void MainWindow_KeyDown...GetValue(e); } 这两个方法获取值是相同,如使用下面代码,判断相等成立 Debug.Assert(scanCode == (int) scanCodeFromWpf...; 但如 MapVirtualKeyW 函数所述,确实存在一些情况下,获取不到相同结果 本文代码放在 github 和 gitee 上,可以使用如下命令行拉取代码 先创建一个空文件夹,接着使用命令行...cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文代码 git init git remote add origin https://gitee.com/lindexi/lindexi_gd.git

8710

javaSystem.getProperty()方法能够获取

java.version Java 执行时环境版本号 java.vendor Java 执行时环境供应商 java.vendor.url Java 供应商 URL java.home Java 安装文件夹...Java 类格式版本 java.class.path Java 类路径 java.library.path 载入库时搜索路径列表 java.io.tmpdir 默认暂时文件路径 java.compiler...要使用 JIT 编译器名称 java.ext.dirs 一个或多个扩展文件夹路径 os.name 操作系统名称 os.arch 操作系统架构 os.version 操作系统版本号 file.separator...UNIX 系统中是“/”) path.separator 路径分隔符(在 UNIX 系统中是“:”) line.separator 行分隔符(在 UNIX 系统中是“/n”) user.name 用户账户名称...user.home 用户主文件夹 user.dir 用户的当前工作文件夹 获取代码演示样例: public class SystemProperty { public static

26310

Java 中是如何获取 IP 属地

细心小伙伴可能会发现,抖音新上线了 IP 属地功能,小伙伴在发表动态、发表评论以及聊天时候,都会显示自己 IP 属地信息 下面,我就来讲讲,Java 中是如何获取 IP 属地,主要分为以下几步...通过 HttpServletRequest 对象,获取用户 IP 地址 通过 IP 地址,获取对应省份、城市 首先需要写一个 IP 获取工具类,因为每一次用户 Request ...在我们获取到用户 IP 地址后,那么就可以获取对应 ip 信息了 我在 Github 冲浪时候,发现了 Ip2region 项目。...一个准确率 99.9% 离线 IP 地址定位库,0.0x 毫秒级查询,ip2region.db 数据库只有数 MB,提供了 java,php,c,python,nodejs,golang,c# 等查询绑定和...所以我们还需要对这个方法进行一下封装,得到获取 IP 属地信息。

2.6K20

干货分享-Prelude安装方法+如何获取资源

【使用Prelude整理媒体并创建粗略汇编】 了解如何从头开始使用Prelude媒体组织器工具来确保Premiere Pro项目的组织性 快速标记和转码视频素材,并使用Prelude(视频记录和摄取工具...【使用Prelude整理媒体并创建粗略汇编】 了解如何从头开始使用Prelude媒体组织器工具来确保Premiere Pro项目的组织性 您可以使用 Adobe Prelude 来收录剪辑、转码素材、...然后可将粗剪、剪辑、子剪辑和素材箱 Prelude 导出至 Adobe Premiere Pro 项目,进行编辑。...Adobe Prelude(Pl)2021软件下载: [软件名称]:Adobe Prelude 2021 [软件语言]:中文简体 [系统环境]:Win7/Win8/Win10/Win11 软件获取: 首先...功能概述 1、建立先进材料收藏 2、几乎所有工作流程集成 3、滚动缩略图插入对话框 4、定制标志 5、几乎所有工作流程集成 6、可调整进口元数据 7、可定制扩展性 8、所有字段都可搜索元数据

72810

一线大厂在用爬虫方法,看我如何破了它!

图 6-17 class 属性值和数字对比 图 6-17 中可以看出,class 属性值和数字是一一对应,如属性值 vhk08k 与数字 0 对应。...代码运行后得到结果为: 6 运行结果说明映射这种方法是可行。...print(phone) 运行结果为: [4, 0, 0, None, 5, 1, 7, 7, 1] 我们使用映射方法得到了商家联系电话,说明 SVG 映射爬虫已经被我们绕过了。...感兴趣同学可以使用示例 6 中方法,尝试映射大众点评案例中数字。 如果这种手段绕过方法这么简单的话,那么它早就被淘汰了,为什么连大众点评这样大型网站都会使用呢?...此时如果按照示例 6 中人为地将 class 值和对应文字进行映射的话,就非常麻烦了。试想一下,如果网页中所有的文字都使用这种映射爬虫手段,那么爬虫工程师要如何应对呢?

1.4K30
领券