zoukankan      html  css  js  c++  java
  • 【java】method.invoke(方法底层所属对象/null,new Object[]{实际参数})

    反射调方法时无论是静态/非静态,固定/可变参数,都有Object对象数组对参数进行包装。

     1 package com.tn.clas;
     2 
     3 import java.lang.reflect.Method;
     4 import java.util.Arrays;
     5 
     6 public class Client {
     7     public static void main(String[] args) throws Exception {
     8         Class<User> clas=User.class;
     9         Method m=clas.getMethod("method", String[].class);
    10         m.invoke(null, new Object[]{new String[]{"aa","bb","cc"}});//静态方法可省略对象,直接用null替代,或用clas
    11         
    12         m=clas.getDeclaredMethod("method", int[].class);//非public方法要用declared获取
    13         m.setAccessible(true);//非public方法需要设置为可访问
    14         m.invoke(clas.newInstance(), new int[]{1,2,3,4,3,2,1});//非静态方法需要提供底层的类对象
    15     }
    16 }
    17 
    18 class User{
    19     public static void method(String...strings){
    20         System.out.println(Arrays.toString(strings));
    21     }
    22     
    23     private void method(int...ints){
    24         System.out.println(Arrays.toString(ints));
    25     }
    26 }
  • 相关阅读:
    新男人八题---AStringGame
    hihocoder1457
    SPOJ
    后缀自动机
    牛客练习赛13D
    Educational Codeforces Round 38
    Binary Differences
    laravel 带条件的分页查询
    url添加时间戳
    安卓无法上传照片
  • 原文地址:https://www.cnblogs.com/xiongjiawei/p/6858957.html
Copyright © 2011-2022 走看看