91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

永丰县| 龙南县| 凤庆县| 班玛县| 枞阳县| 海安县| 亚东县| 乐都县| 柳江县| 海阳市| 北川| 独山县| 郑州市| 巨野县| 阜康市| 汕头市| 兴隆县| 濮阳县| 叶城县| 德江县| 宝鸡市| 周至县| 建平县| 内黄县| 罗山县| 新丰县| 布尔津县| 丰台区| 岫岩| 从化市| 南康市| 金门县| 哈巴河县| 边坝县| 沭阳县| 栾城县| 纳雍县| 宿州市| 毕节市| 当涂县| 富宁县|