Groovy – Java类的反射 – 方法和参数

Groovy – Java类的反射 – 方法和参数,第1张

概述你将如何在Groovy中进行这个反射任务: (1)为Groovy函数提供类类型 (2)循环遍历此类的所有方法         (a)从方法中打印出每个参数名称和类型         (b)打印出退货类型 我认为你能做的最好的事情是写下这样的东西: def dumpOut( clz ) { clz.metaClass.methods.each { method -> println "$ 你将如何在Groovy中进行这个反射任务:

(1)为Groovy函数提供类类型
(2)循环遍历此类的所有方法
        (a)从方法中打印出每个参数名称和类型
        (b)打印出退货类型

解决方法 我认为你能做的最好的事情是写下这样的东西:

def dumpOut( clz ) {  clz.MetaClass.methods.each { method ->    println "${method.returnType.name} ${method.name}( ${method.parameterTypes*.name.join( ',' )} )"  }}dumpOut String.class

哪个会打印出来:

boolean equals( @R_404_4126@.Object )java.lang.class getClass(  )int hashCode(  )voID notify(  )voID notifyAll(  )@R_404_4126@.String toString(  )voID wait(  )voID wait( long )voID wait( long,int )char charat( int )int codePointAt( int )int codePointBefore( int )int codePointCount( int,int )int compareto( @R_404_4126@.Object )int compareto( @R_404_4126@.String )int comparetoIgnoreCase( @R_404_4126@.String )@R_404_4126@.String concat( @R_404_4126@.String )boolean contains( @R_404_4126@.CharSequence )boolean contentEquals( @R_404_4126@.CharSequence )boolean contentEquals( @R_404_4126@.StringBuffer )@R_404_4126@.String copyValueOf( [C )@R_404_4126@.String copyValueOf( [C,int,int )boolean endsWith( @R_404_4126@.String )boolean equals( @R_404_4126@.Object )boolean equalsIgnoreCase( @R_404_4126@.String )@R_404_4126@.String format( @R_404_4126@.String,[L@R_404_4126@.Object; )@R_404_4126@.String format( java.util.Locale,@R_404_4126@.String,[L@R_404_4126@.Object; )[B getBytes(  )[B getBytes( @R_404_4126@.String )[B getBytes( java.nio.charset.Charset )voID getBytes( int,[B,int )voID getChars( int,[C,int )int hashCode(  )int indexOf( int )int indexOf( @R_404_4126@.String )int indexOf( int,int )int indexOf( @R_404_4126@.String,int )@R_404_4126@.String intern(  )boolean isEmpty(  )int lastIndexOf( int )int lastIndexOf( @R_404_4126@.String )int lastIndexOf( int,int )int lastIndexOf( @R_404_4126@.String,int )int length(  )boolean matches( @R_404_4126@.String )int offsetByCodePoints( int,int )boolean regionMatches( int,int )boolean regionMatches( boolean,int )@R_404_4126@.String replace( char,char )@R_404_4126@.String replace( @R_404_4126@.CharSequence,@R_404_4126@.CharSequence )@R_404_4126@.String replaceAll( @R_404_4126@.String,@R_404_4126@.String )@R_404_4126@.String replaceFirst( @R_404_4126@.String,@R_404_4126@.String )[L@R_404_4126@.String; split( @R_404_4126@.String )[L@R_404_4126@.String; split( @R_404_4126@.String,int )boolean startsWith( @R_404_4126@.String )boolean startsWith( @R_404_4126@.String,int )@R_404_4126@.CharSequence subSequence( int,int )@R_404_4126@.String substring( int )@R_404_4126@.String substring( int,int )[C tochararray(  )@R_404_4126@.String tolowerCase(  )@R_404_4126@.String tolowerCase( java.util.Locale )@R_404_4126@.String toString(  )@R_404_4126@.String toupperCase(  )@R_404_4126@.String toupperCase( java.util.Locale )@R_404_4126@.String trim(  )@R_404_4126@.String valueOf( [C )@R_404_4126@.String valueOf( boolean )@R_404_4126@.String valueOf( char )@R_404_4126@.String valueOf( double )@R_404_4126@.String valueOf( float )@R_404_4126@.String valueOf( int )@R_404_4126@.String valueOf( @R_404_4126@.Object )@R_404_4126@.String valueOf( long )@R_404_4126@.String valueOf( [C,int )

我认为在不 *** 作字节码的情况下参数名称是不可能的(假设该类是使用这种调试信息完整编译的)

总结

以上是内存溢出为你收集整理的Groovy – Java类的反射 – 方法和参数全部内容,希望文章能够帮你解决Groovy – Java类的反射 – 方法和参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1228173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存