广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州Java反射方法是什么?_北大青鸟IT学校

作者:邓华发布时间:2021-04-21分类:Java技术浏览:830


导读:Java反射方法是什么?这是大家在学习Java的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么讲解这道题的。

Java反射方法是什么?这是大家在学习Java的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么讲解这道题的。

以下四个方法在Class类中返回有关类的方法的信息:

Method[]  getMethods() Method[]  getDeclaredMethods() Method getMethod(String name,  Class...  parameterTypes) Method getDeclaredMethod(String name,  Class...  parameterTypes)

getMethods()方法返回该类的所有可访问的公共方法无论从类中还是继承自超类。

getDeclaredMethods()方法返回该类所有只在声明中的方法(不包括从超类继承的方法)。

getMethod(String name,Class ... parameterTypes)和getDeclaredMethod(String name,Class ... parameterTypes)通过方法名和参数类型获取Method对象。

Method类中的getReturnType()方法返回包含有关返回类型信息的Class对象。

import java.lang.reflect.Constructor;

 import java.lang.reflect.Executable;

 import java.lang.reflect.Method;

 import java.lang.reflect.Modifier;

 import java.lang.reflect.Parameter;

 import java.util.ArrayList;


 class MyClass<T> {


   public MyClass(int i, int j, String s) {


   }


   public MyClass(T t) {


   }


   public int getInt(String a) {

     return 0;

   }

 }


 public class Main {

   public static void main(String[] args) {

     Class<MyClass> c = MyClass.class;


     ArrayList<String> methodsDesciption = getDeclaredMethodsList(c);

     System.out.println("Declared Methods  for " + c.getName());

     for (String desc : methodsDesciption) {

       System.out.println(desc);

     }

     methodsDesciption = getMethodsList(c);

     System.out.println("\nMethods for  " + c.getName());

     for (String desc : methodsDesciption) {

       System.out.println(desc);

     }


   }


   public static ArrayList<String> getMethodsList(Class c) {

     Method[] methods = c.getMethods();

     ArrayList<String> methodsList = getMethodsDesciption(methods);

     return methodsList;

   }


   public static ArrayList<String> getDeclaredMethodsList(Class c) {

     Method[] methods = c.getDeclaredMethods();

    ArrayList<String> methodsList = getMethodsDesciption(methods);

     return methodsList;

   }


   public static ArrayList<String> getMethodsDesciption(Method[] methods) {

     ArrayList<String> methodList = new ArrayList<>();


     for (Method m : methods) {

       String modifiers = getModifiers(m);


       Class returnType = m.getReturnType();

       String returnTypeName = returnType.getSimpleName();


       String methodName = m.getName();


       String params = getParameters(m).toString();


       String throwsClause = getExceptionList(m).toString();


       methodList.add(modifiers + "  " + returnTypeName + "  " + methodName

           + "(" + params + ") " + throwsClause);

     }


     return methodList;

   }


   public static ArrayList<String> getParameters(Executable exec) {

     Parameter[] parms = exec.getParameters();

     ArrayList<String> parmList = new ArrayList<>();

     for (int i = 0; i < parms.length; i++) {


       int mod = parms[i].getModifiers() & Modifier.parameterModifiers();

       String modifiers = Modifier.toString(mod);

       String parmType = parms[i].getType().getSimpleName();

       String parmName = parms[i].getName();

       String temp = modifiers + "  " + parmType + "  " + parmName;

       if (temp.trim().length() == 0) {

         continue;

       }

       parmList.add(temp.trim());

     }

     return parmList;

   }


   public static ArrayList<String> getExceptionList(Executable exec) {

     ArrayList<String> exceptionList = new ArrayList<>();

     for (Class<?> c : exec.getExceptionTypes()) {

       exceptionList.add(c.getSimpleName());

     }

     return exceptionList;

   }


   public static String getModifiers(Executable exec) {

     int mod = exec.getModifiers();

     if (exec instanceof Method) {

       mod = mod & Modifier.methodModifiers();

     } else if (exec instanceof Constructor) {

       mod = mod & Modifier.constructorModifiers();

     }

     return Modifier.toString(mod);

   }

 } 

上面的代码生成以下结果。

Java反射方法实例.png

想了解更多关于Java的资讯,可以来惠州北大青鸟新方舟校区了解一下。

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表