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

惠州分享Java类反射实例_北大青鸟IT学校

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


导读:上一篇文章惠州北大青鸟老师给大家讲解了Java类反射是是什么,为了让大家更好地理解Java类反射,老师给大家分享Java类反射的实例,希望对大家有帮助。

上一篇文章惠州北大青鸟老师给大家讲解了Java类反射是是什么,为了让大家更好地理解Java类反射,老师给大家分享Java类反射的实例,希望对大家有帮助。

import java.io.Serializable;import java.lang.reflect.Modifier;import java.lang.reflect.TypeVariable;class MyClass<T> implements Cloneable, Serializable {  private int id = -1;  private String name = "Unknown";  public MyClass(int id, String name) {
   this.id = id;
   this.name = name;
 }  public Object clone() {    try {      return super.clone();
   } catch (CloneNotSupportedException e) {      throw new RuntimeException(e.getMessage());
   }
 }  public String toString() {    return "MyClass: id=" + this.id + ", name=" + this.name;
 }
}public class Main {  public static void main(String[] args) {    // Print the class declaration for the Class class    String classDesciption = getClassDescription(MyClass.class);
   System.out.println(classDesciption);
 }  public static String getClassDescription(Class c) {
   StringBuilder classDesc = new StringBuilder();    int modifierBits = 0;
   String keyword = "";    if (c.isInterface()) {
     modifierBits = c.getModifiers() & Modifier.interfaceModifiers();      if (c.isAnnotation()) {
       keyword = "@interface";
     } else {
       keyword = "interface";
     }
   } else if (c.isEnum()) {
     modifierBits = c.getModifiers() & Modifier.classModifiers();
     keyword = "enum";
   }
   modifierBits = c.getModifiers() & Modifier.classModifiers();
   keyword = "class";

   String modifiers = Modifier.toString(modifierBits);
   classDesc.append(modifiers);
   classDesc.append(" " + keyword);
   String simpleName = c.getSimpleName();
   classDesc.append(" " + simpleName);

   String genericParms = getGenericTypeParams(c);
   classDesc.append(genericParms);

   Class superClass = c.getSuperclass();    if (superClass != null) {
     String superClassSimpleName = superClass.getSimpleName();
     classDesc.append("  extends " + superClassSimpleName);
   }
   String interfaces = Main.getClassInterfaces(c);    if (interfaces != null) {
     classDesc.append("  implements " + interfaces);
   }    return classDesc.toString();
 }  public static String getClassInterfaces(Class c) {
   Class[] interfaces = c.getInterfaces();
   String interfacesList = null;    if (interfaces.length > 0) {
     String[] interfaceNames = new String[interfaces.length];      for (int i = 0; i < interfaces.length; i++) {
       interfaceNames[i] = interfaces[i].getSimpleName();
     }
     interfacesList = String.join(", ", interfaceNames);
   }    return interfacesList;
 }  public static String getGenericTypeParams(Class c) {
   StringBuilder sb = new StringBuilder();
   TypeVariable<?>[] typeParms = c.getTypeParameters();    if (typeParms.length > 0) {
     String[] paramNames = new String[typeParms.length];      for (int i = 0; i < typeParms.length; i++) {
       paramNames[i] = typeParms[i].getTypeName();
     }
     sb.append("<");
     String parmsList = String.join(",", paramNames);
     sb.append(parmsList);
     sb.append(">");
   }    return sb.toString();
 }
}

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

class MyClass<T>  extends Object  implements Cloneable, Serializable

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

class MyClass<T> extends Object implements Cloneable,Serializable

相信通过上面老师的解答,大家应该知道Java类反射是是什么了吧!想了解更多关于Java的资讯,可以来惠州北大青鸟新方舟校区详细了解。

Java13.png

Java

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


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