中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

getClass .class如何在java中使用

發布時間:2021-04-15 17:55:57 來源:億速云 閱讀:170 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關getClass .class如何在java中使用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

java反射機制

怎么從一個實例上的獲得類反射

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

怎么從一個類上獲得類的反射

/**
 * ClassName 類名稱
 * .class 該類的屬性
 * @return
 * Class<? extends Object>
 */
ClassName.class
//例子
Class<?> a = String.class
Class<?> b = Integer.class
Class<?> 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);
  }
  /**
   * 調用指定對象的指定方法。
   * @param Object obj 對象實例
   * @param String methodName 要調用的方法名稱
   * @param Class<?>[] classes 方法中的參數對象
   * @param Object[] valObj 需要向參數中傳遞的值 
   * @return Object 直接結果
   * */
  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);
  }
  /**
   * 打印對象內容
   * @param Object obj 對象實例
   * @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)
    {
      //能夠訪問該字段
      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 測試類
 */
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";
  }
}

以上就是getClass .class如何在java中使用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

漯河市| 灵璧县| 平果县| 丰原市| 布尔津县| 山阴县| 靖西县| 阳曲县| 惠东县| 江华| 钟祥市| 耒阳市| 玉环县| 岱山县| 宁南县| 宜兴市| 南丹县| 娱乐| 婺源县| 三江| 扎鲁特旗| 元阳县| 徐汇区| 河南省| 中卫市| 任丘市| 蛟河市| 太和县| 上杭县| 监利县| 桃源县| 阳朔县| 玉环县| 闵行区| 巴青县| 安阳市| 文成县| 体育| 米林县| 盱眙县| 陇西县|