`

ReflectionTest--java反射的简单测试

阅读更多
package test;
import java.util.*;
import java.lang.reflect.*;

public class ReflectionTest {

/**
this program uses reflection to print all features of a class.
@version 1.1 2004-02-01
@author Cay Horstmann
@deprecated 关于反射:利用反射分析类的能力:(反射机制最重要的内容——检查类结构)
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//read class name from command line args or user input
String name;
if(args.length>0)name=args[0];
else{
Scanner in=new Scanner(System.in);
System.out.println("Enter class name (e.g. java.util.Date)");
name=in.next();
System.out.println("------------------------declare this class is begin......!------------------------\n");
}
try{
//print class name and superclass name (if!=object)
Class cl=Class.forName(name);
Class supercl=cl.getClass();

String modifiers=Modifier.toString(cl.getModifiers());
if(modifiers.length()>0)System.out.print(modifiers+" ");
System.out.print("class "+name);
if(supercl!=null&&supercl!=Object.class){
System.out.println(" extends " +supercl.getName());
System.out.print("{");

//System.out.println("------------------------printConstructors()is begin!------------------------");
    printConstructors(cl);
    //System.out.println("------------------------printConstructors()is end!------------------------");
    System.out.println();
   
    //System.out.println("------------------------printMethods()is begin!------------------------");
    printMethods(cl);
    //System.out.println("------------------------printMethods()is end!------------------------");
    System.out.println();
   
    //System.out.println("------------------------printFields()is begin!------------------------");
    printFields(cl);
    //System.out.println("------------------------printFields()is end!------------------------");
   
    System.out.println("}");
}

}catch(ClassNotFoundException e){
e.printStackTrace();
}
System.exit(0);

}
/**
* prints all constructors of a class
* @param cl a class
*/
public static void printConstructors(Class cl)
{
Constructor[] constructors=cl.getDeclaredConstructors();

for(Constructor c:constructors){
String name=c.getName();
System.out.println("  ");
String modifiers=Modifier.toString(c.getModifiers());
if(modifiers.length()>0)System.out.print(modifiers+" ");
System.out.print(name+"(");

//print parameter types
Class[] paramTypes=c.getParameterTypes();
for(int j=0;j<paramTypes.length;j++){
if(j>0)System.out.print(" ,");
System.out.print(paramTypes[j].getName());
}
System.out.print(");");
}
}

/**
* print all methods of a class
* param cl is a class
*/
public static void printMethods(Class cl){
Method[] methods=cl.getDeclaredMethods();

for(Method m:methods){
Class retType=m.getReturnType();
String name=m.getName();

System.out.println("  ");
//print modifiers ,return type,and method name
String modifiers=Modifier.toString(m.getModifiers());
if(modifiers.length()>0){
System.out.print(modifiers+" "+retType.getName()+" "+name+"(");
//print parameter types
Class[] paramTypes=m.getParameterTypes();
for(int j=0;j<paramTypes.length;j++){
if (j>0) {
System.out.print(",");
}
System.out.print(paramTypes[j].getName());
}
System.out.println(");");
}
}
}
/**
* print all fields of a class
* @param cl
*/
public static void printFields(Class cl){
Field[] fields=cl.getDeclaredFields();

for(Field f:fields){
Class type=f.getType();
String name=f.getName();
System.out.print(" ");
String modifiers=Modifier.toString(f.getModifiers());
if(modifiers.length()>0)System.out.print(modifiers+" ");
System.out.println(type.getName()+" "+name+" ;");
}
// System.out.println(" printFields()is ends!");
}

}

/***
* java.lang.Double测试得结果:
*
*
public final class java.lang.Double extends java.lang.Class

public java.lang.Double(java.lang.String); 
public java.lang.Double(double);
 
public int hashCode();
 
public static native long doubleToRawLongBits(double);
 
public static long doubleToLongBits(double);
 
public static native double longBitsToDouble(long);
 
public volatile int compareTo(java.lang.Object);
 
public int compareTo(java.lang.Double);
 
public boolean equals(java.lang.Object);
 
public static java.lang.String toString(double);
 
public java.lang.String toString();
 
public static java.lang.String toHexString(double);
 
public static int compare(double,double);
 
public static java.lang.Double valueOf(double);
 
public static java.lang.Double valueOf(java.lang.String);
 
public static boolean isNaN(double);
 
public boolean isNaN();
 
public byte byteValue();
 
public double doubleValue();
 
public float floatValue();
 
public int intValue();
 
public boolean isInfinite();
 
public static boolean isInfinite(double);
 
public long longValue();
 
public short shortValue();
 
public static double parseDouble(java.lang.String);

public static final double POSITIVE_INFINITY ;
public static final double NEGATIVE_INFINITY ;
public static final double NaN ;
public static final double MAX_VALUE ;
public static final double MIN_NORMAL ;
public static final double MIN_VALUE ;
public static final int MAX_EXPONENT ;
public static final int MIN_EXPONENT ;
public static final int SIZE ;
public static final java.lang.Class TYPE ;
private final double value ;
private static final long serialVersionUID ;
}
*/


注意:如果数据类型输入错误或不规范均会发生异常.
分享到:
评论

相关推荐

    java Reflection 反射机制 反编译

    public class ReflectionTest { public static void main(String[] args) { Class c = null; try { c = Class.forName("java.lang.String"); System.out.println("package " + c.getPackage().getName() ...

    ReflectionTest.java

    本资源为有关反射类java程序的代码,代码很全很有用,相信学java的会喜欢它。

    IOS应用源码——ReflectionTest.rar

    IOS应用源码——ReflectionTest.rar

    STM32F103使用flash模拟eeprom

    STM32F103 使用内部flash模拟eeprom。使用官方文件,已验证可行。直接拿使用。

    若依框架管理系统研究生辅助科研管理系统

    若依框架管理系统研究生辅助科研管理系统

    scratch2源码接鸡蛋

    scratch2源码接鸡蛋提取方式是百度网盘分享地址

    基于并行分布式差分算法的含需求响应家庭微网能量管理(matlab)

    该程序是《Demand Response of Residential Houses Equipped with PV-Battery Systems: An Application Study Using Evolutionary Algorithms》完全复现程序,主要做的是一个家庭微网能量管理系统,考虑家庭微网是并网运行的,可以向电网出售电量或者购入电量,同时家庭微网中含有空调、热水器、洗衣机等需求响应负荷资源,在电价的引导下积极进行需求响应,算法的求解方面采用了一种并行的差分进化算法,使得对于大规模家庭用户场景下依然求解速度很快,对比多种粒子群算法以及其余差分进化算法,求解效果比较突出。 参考文献:《Demand Response of Residential Houses Equipped with PV-Battery Systems: An Application Study Using Evolutionary Algorithms》

    马踏棋盘笔记+源码!!!!!!!!!!!

    马踏棋盘笔记+源码!!!!!!!!!!!

    cryptography-41.0.2-cp37-abi3-musllinux_1_1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    salt-minion-3005.5-2.el8.x86-64.rpm

    salt-minion-3005.5-2.el8.x86_64 Salt是一个基于Python的配置管理平台,旨在从单个主服务器控制许多从服务器(用Salt的术语叫Minions)。本指南将指导您配置Salt Master和Minion,并支持任何linux发行版。

    linux思维导图思维导图1

    linux思维导图思维导图1

    【SOC估计】基于matlab扩展卡尔曼滤波EKF锂电池SOC估计(SOC误差)【含Matlab源码 4584期】.mp4

    Matlab研究室上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    02一层平面图.jpg

    02一层平面图.jpg

    基于单片机protues仿真的DS18B20温度测量采集系统设计

    ds18b20 基于单片机protues仿真的DS18B20温度测量采集系统设计 1、系统使用51单片机为系统设计; 2、protues仿真设计; 3、keil软件编写程序,C语言设计; 4、提供仿真图和源代码; 5、直接使用,方便二次开发; 6、DS18B20温度测量采集系统设计; 软件说明; roteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是比较好的仿真单片机及外围器件的工具。虽然国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。 Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Corte

    debugpy-1.3.0-cp37-cp37m-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于Java的设计模式-代理模式demo的实现(高分课设)

    基于Java的设计模式——代理模式demo的实现(高分课设)个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于Java的设计模式——代理模式demo的实现(高分课设)个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于Java的设计模式——代理模式demo的实现(高分课设)个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于Java的设计模式——代理模式demo的实现(高分课设)个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。

    scratch2源码7B-52大作战

    scratch2源码7B-52大作战提取方式是百度网盘分享地址

    scratch2源码坚持到底

    scratch2源码坚持到底提取方式是百度网盘分享地址

    scratch2源码恐龙喷火

    scratch2源码恐龙喷火提取方式是百度网盘分享地址

    debugpy-1.0.0b10-cp38-cp38-macosx_10_14_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics