⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classtest.java

📁 Java 程序设计源码 只提供了部分
💻 JAVA
字号:

import java.lang.reflect.*;     //反射API

class ClassTest
{
        public static void main(String[] args)
        {
                /*Point pt = new Point();
                //getClass() 获取实例
                Class c1 = pt.getClass();
                System.out.println(c1.getName()); 
                
                //Class.forName() 获取实例
                try
                {
                        Class c2 = Class.forName("Point");
                        System.out.println(c2.getName());
                }
                catch(Exception e)
                {
                        e.printStackTrace();
                }
                
                //.class 获取实例
                Class c3 = Point.class;
                System.out.println(c3.getName());
                
                Class c4 = int.class;
                System.out.println(c4.getName());      
                
                Class c5 = Integer.TYPE;
                System.out.println(c5.getName());  
                
                Class c6 = Integer.class;
                System.out.println(c6.getName());    //java.lang.Integer
                */
                
                /*System.out.println("Before new Point");
                new Point();
                System.out.println("After new Point");
                
                try
                {
                        Class.forName("Line");
                }
                catch(Exception e)
                {
                        e.printStackTrace();
                }*/
                
                /*if(args.length != 1)
                {
                        return;
                }
                
                try
                {
                        Class c = Class.forName(args[0]); //取得类名,即c.getName()
                        Point pt = (Point)c.newInstance();//Point.newInstance()
                        pt.output();
                }
                catch(Exception e)
                {
                        e.printStackTrace();
                }*/
                
                
                //动态创建一个类,动态实例,动态类的调用方法。
                if(args.length != 1)
                {
                        return;
                }
                
                try
                {
                        //加载命令行 参数 类 args[0]
                        Class c = Class.forName(args[0]); //取得类名,即c.getName()
                        //得到参数类的所有构造方法
                        //定义一个用于存放构造方法的构造方法数组
                        Constructor[] cons = c.getDeclaredConstructors();
                        
                       /*for(int i = 0;i < cons.length;i++)
                        {
                                System.out.println(cons[i]);
                        }
                        /*得到参数类的所有方法
                          定义用于存放所有方法的方法数组/
                        Method[] ms = c.getDeclaredMethods();
                        
                        for(int i = 0;i < cons.length;i++)
                        {
                                System.out.println(ms[i]);
                        }*/
                        
                        Class[] params = cons[0].getParameterTypes();
                        Object[] paramValues = new Object[params.length];
                        
                        for(int i = 0;i < params.length;i++)
                        {
                                if(params[i].isPrimitive())
                                {
                                paramValues[i] = new Integer(i + 3);
                                }
                        }
                        
                        //创建对象
                        Object o = cons[0].newInstance(paramValues);
                        //得到方法
                        Method[] ms = c.getDeclaredMethods();
                        //实现方法
                        //因为,只有一个方法所以是 ms[0],
                        //有多个方法时,要进行判断调用某个特定的方法
                        /*try
                        {*/
                                ms[0].invoke(o,null);
                        /*}
                        catch(Exception e)
                        {
                                System.out.println(e.toString());
                        }*/
                }
                catch(Exception e)
                {
                        e.printStackTrace();
                }
                
        }       
}

class Point
{
        int x,y;
        
        static
        {
                System.out.println("Loading Point...");
        }
        
        void output()
        {
                System.out.println("x = " + x + "," + "y = " + y);
        }
        
        Point(int x,int y)
        {
                this.x = x;
                this.y = y;
        }
}

class Line
{
        static 
        {
                System.out.println("Loading Line...");
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -