(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类的反射 – 方法和参数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)