加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 16:26:43 所属栏目:大数据 来源:网络整理
导读:你将如何在Groovy中进行这个反射任务: (1)为Groovy函数提供类类型 (2)循环遍历此类的所有方法 ????????(a)从方法中打印出每个参数名称和类型 ????????(b)打印出退货类型 解决方法 我认为你能做的最好的事情是写下这样的东西: def dumpOut( clz ) { clz.met
你将如何在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( 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 )

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读