溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

java中g(shù)etClass.class如何使用

發(fā)布時(shí)間:2021-07-22 16:01:06 來(lái)源:億速云 閱讀:149 作者:Leah 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)java中g(shù)etClass.class如何使用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

java反射機(jī)制

怎么從一個(gè)實(shí)例上的獲得類(lèi)反射

/** * obj 實(shí)例的對(duì)象 * getClass() 獲得該實(shí)例類(lèi)的反射 * @return  * Class<? extends Object> */obj.getClass();//例子String str1 = "123";Class<?> strClass1 = str1.getClass();String str2 = new String("456");Class<?> strClass2 = str2.getClass();

怎么從一個(gè)類(lèi)上獲得類(lèi)的反射

/** * ClassName 類(lèi)名稱(chēng) * .class 該類(lèi)的屬性 * @return * Class<? extends Object> */ClassName.class//例子Class<?> a = String.classClass<?> b = Integer.classClass<?> c = Double.class

package Main;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.util.Arrays;import Demo.Demo1;public class Index {  public static void main(String[] agrs) throws Exception  {    Demo1 obj = new Demo1();    String str = (String)runTargetMethod(obj,"test1",new Class[]{String.class,String.class},new Object[]{"2","3"});    System.out.println(str);    System.out.println();    System.out.println();    System.out.println();    dumpTargetMethod(obj);  }  /**   * 調(diào)用指定對(duì)象的指定方法。   * @param Object obj 對(duì)象實(shí)例   * @param String methodName 要調(diào)用的方法名稱(chēng)   * @param Class<?>[] classes 方法中的參數(shù)對(duì)象   * @param Object[] valObj 需要向參數(shù)中傳遞的值    * @return Object 直接結(jié)果   * */  public static Object runTargetMethod(Object obj,String methodName,Class<?>[] classes,Object[] valObj) throws Exception  {    Class<?> classObj = obj.getClass();    Method method = classObj.getMethod(methodName,classes);    return method.invoke(obj, valObj);  }  /**   * 打印對(duì)象內(nèi)容   * @param Object obj 對(duì)象實(shí)例   * @throws IllegalAccessException    * @throws IllegalArgumentException    * */  public static void dumpTargetMethod(Object obj) throws IllegalArgumentException, IllegalAccessException  {    Class<?> classObj = obj.getClass();    System.out.println("-------------------method dump-------------------------");    Method[] methods = classObj.getDeclaredMethods();    for(Method method : methods)    {      Class<?>[] parameters = method.getParameterTypes();      StringBuffer strBuffer = new StringBuffer();      for(int i=0;i<parameters.length;i++)      {        if(i < (parameters.length - 1))          strBuffer.append(parameters[i].getName() + ",");        else          strBuffer.append(parameters[i].getName());      }      if(!strBuffer.toString().isEmpty())      {        System.out.println("method info (method modifier : " + Modifier.toString(method.getModifiers()) + "  method return type : " + method.getReturnType().getName() + "  method name : " + method.getName() + " parameters : " + strBuffer.toString() + ")");      }else{        System.out.println("method info (method modifier : " + Modifier.toString(method.getModifiers()) + "  method return type : " + method.getReturnType().getName() + "  method name : " + method.getName() + " parameters : null)");      }    }    System.out.println("-------------------method dump-------------------------");    System.out.println("-------------------------------------------------------");    System.out.println("-------------------fields dump-------------------------");    Field[] fields = classObj.getDeclaredFields();    for(Field field : fields)    {      //能夠訪(fǎng)問(wèn)該字段      field.setAccessible(true);      System.out.println("field info (modifier : " + Modifier.toString(field.getModifiers()) + "  type : " + field.getType().getName() + " " + " name : " + field.getName() + " defaultValue : " + field.get(obj).toString() + ")");    }  }}

package Demo;/** * Demo 測(cè)試類(lèi) */public class Demo1 {  public String demo1 = "demo1_val";  protected String demo2 = "demo2_val";  private String demo3 = "demo3_val";  public static String demo4 = "demo4_val";  public String getName()  {    return "my name is 勇哥";  }  public int getAge()  {    return 22;  }  public String test1(String str1,String str2)  {    StringBuffer buffer = new StringBuffer(str1);    buffer.append(str2);    return buffer.toString();  }  public String test1()  {    return "123";  }}

關(guān)于java中g(shù)etClass.class如何使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI