Groovy – Java类的反射 – 方法和参数
发布时间:2020-12-14 16:26:43 所属栏目:大数据 来源:网络整理
导读:你将如何在Groovy中进行这个反射任务: (1)为Groovy函数提供类类型 (2)循环遍历此类的所有方法 ????????(a)从方法中打印出每个参数名称和类型 ????????(b)打印出退货类型 解决方法 我认为你能做的最好的事情是写下这样的东西: def dumpOut( clz ) { clz.met
你将如何在Groovy中进行这个反射任务:
(1)为Groovy函数提供类类型 解决方法
我认为你能做的最好的事情是写下这样的东西:
def dumpOut( clz ) { clz.metaClass.methods.each { method -> println "${method.returnType.name} ${method.name}( ${method.parameterTypes*.name.join( ',' )} )" } } dumpOut String.class 哪个会打印出来: boolean equals( java.lang.Object ) java.lang.Class getClass( ) int hashCode( ) void notify( ) void notifyAll( ) java.lang.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( java.lang.Object ) int compareTo( java.lang.String ) int compareToIgnoreCase( java.lang.String ) java.lang.String concat( java.lang.String ) boolean contains( java.lang.CharSequence ) boolean contentEquals( java.lang.CharSequence ) boolean contentEquals( java.lang.StringBuffer ) java.lang.String copyValueOf( [C ) java.lang.String copyValueOf( [C,int,int ) boolean endsWith( java.lang.String ) boolean equals( java.lang.Object ) boolean equalsIgnoreCase( java.lang.String ) java.lang.String format( java.lang.String,[Ljava.lang.Object; ) java.lang.String format( java.util.Locale,java.lang.String,[Ljava.lang.Object; ) [B getBytes( ) [B getBytes( java.lang.String ) [B getBytes( java.nio.charset.Charset ) void getBytes( int,[B,int ) void getChars( int,[C,int ) int hashCode( ) int indexOf( int ) int indexOf( java.lang.String ) int indexOf( int,int ) int indexOf( java.lang.String,int ) java.lang.String intern( ) boolean isEmpty( ) int lastIndexOf( int ) int lastIndexOf( java.lang.String ) int lastIndexOf( int,int ) int lastIndexOf( java.lang.String,int ) int length( ) boolean matches( java.lang.String ) int offsetByCodePoints( int,int ) boolean regionMatches( int,int ) boolean regionMatches( boolean,int ) java.lang.String replace( char,char ) java.lang.String replace( java.lang.CharSequence,java.lang.CharSequence ) java.lang.String replaceAll( java.lang.String,java.lang.String ) java.lang.String replaceFirst( java.lang.String,java.lang.String ) [Ljava.lang.String; split( java.lang.String ) [Ljava.lang.String; split( java.lang.String,int ) boolean startsWith( java.lang.String ) boolean startsWith( java.lang.String,int ) java.lang.CharSequence subSequence( int,int ) java.lang.String substring( int ) java.lang.String substring( int,int ) [C toCharArray( ) java.lang.String toLowerCase( ) java.lang.String toLowerCase( java.util.Locale ) java.lang.String toString( ) java.lang.String toUpperCase( ) java.lang.String toUpperCase( java.util.Locale ) java.lang.String trim( ) java.lang.String valueOf( [C ) java.lang.String valueOf( boolean ) java.lang.String valueOf( char ) java.lang.String valueOf( double ) java.lang.String valueOf( float ) java.lang.String valueOf( int ) java.lang.String valueOf( java.lang.Object ) java.lang.String valueOf( long ) java.lang.String valueOf( [C,int ) 我认为在不操作字节码的情况下参数名称是不可能的(假设该类是使用这种调试信息完整编译的) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |