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

惠州如何对Java构造函数执行反射?_北大青鸟IT学校

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


导读:Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,如何对Java构造函数执行反射?下面就让我们一起来看看惠州北大青鸟老师是怎么回答的。

Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,如何对Java构造函数执行反射?下面就让我们一起来看看惠州北大青鸟老师是怎么回答的。

以下代码显示了如何对构造函数执行反射。

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;

   System.out.println("Constructors for " + c.getName());
   Constructor[] constructors = c.getConstructors();
   ArrayList<String> constructDescList = getConstructorsDesciption(constructors);    for (String desc : constructDescList) {
     System.out.println(desc);
   }
 }  public static ArrayList<String> getConstructorsDesciption(
     Constructor[] constructors) {
   ArrayList<String> constructorList = new ArrayList<>();    for (Constructor constructor : constructors) {
     String modifiers = getModifiers(constructor);

     String constructorName = constructor.getName();

     constructorList.add(modifiers + "  " + constructorName + "("
         + getParameters(constructor) + ") " + getExceptionList(constructor));
   }    return constructorList;
 }  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);
 }
}

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

Constructors for MyClass

public MyClass([int arg0,int arg1,String arg2])[]

public MyClass([Object arg0])[]

通过老师的讲解,你知道如何对Java构造函数执行反射了吗?想了解更多关于Java的知识,联系在线客服,或者来惠州北大青鸟新方舟校区了解一下。

Java17.jpg

Java

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


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