Java 反射 靜態(tài)變量 靜態(tài)方法 靜態(tài)成員 調(diào)用 獲取修飾符 判斷是否為靜態(tài)

當(dāng)使用Java反射機(jī)制操作類成員時,傳入對象的參數(shù)改成傳入null

package com.zuozuo.test;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class TestMain {
    private static final String TAG = "VOICE_RECOG";

    public static void main(String[] args) throws Exception {
        // get static field
        Class<?> clazz = Class.forName("com.zuozuo.test.TestMain");
        Field fieldTag = clazz.getDeclaredField("TAG");
        fieldTag.setAccessible(true);
        String tag = (String)fieldTag.get(null); // null object 不要本著這道題不會但不能空著的思想new一個對象...
        System.out.println("TAG is static ? " + Modifier.isStatic(fieldTag.getModifiers()));
        System.out.println(tag);
        
        // invoke static method
        Method method = clazz.getDeclaredMethod("name", String.class);
        String output = (String)method.invoke(null, "B"); // null object
        System.out.println("name is static ? " + Modifier.isStatic(method.getModifiers()));
        System.out.println(output);
    }

    public static String name(String input) {
        if ("A".equals(input)) {
            return "_A_";
        }
        return "_B_";
    }
}

參考

jenkov

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容