zoukankan      html  css  js  c++  java
  • java获取class的几种方式

    以获取Hello.class为例

    public class Hello {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            System.out.println("tes22t2");
            for (String arg : args)
            {
                System.out.println("hello proms:" + arg);
            }
    
        }
    }

    1.反射

    public static void main(String[] args) throws Exception
        {
            args = new String[]{"Hello","java疯狂讲义w"};
            String progClass = args[0];
            String[] progArgs = new String[args.length-1];
            System.arraycopy(args , 1 , progArgs, 0 , progArgs.length);
    //        URL[] urls = {new URL("file:")};
    //        Class<?> clazz = (new URLClassLoader(urls)).loadClass(progClass);
            Class<?> clazz = Class.forName(progClass);
            // 获取需要运行的类的主方法
            Method main = clazz.getMethod("main" , (new String[0]).getClass());
            Object[] argsArray = {progArgs};
            main.invoke(null,argsArray);
        }

    2.URLClassLoader

    URL[] urls = {new URL("file:")};
    Class<?> clazz = (new URLClassLoader(urls)).loadClass(progClass);
    

    3.loadClass

    CompileClassLoader ccl = new CompileClassLoader();
    		// 加载需要运行的类
    		Class<?> clazz = ccl.loadClass(progClass);
    

    4.覆写findClass

    参考

    java8--类加载机制与反射(java疯狂讲义3复习笔记)  

  • 相关阅读:
    计算机思维
    easyui增删改查前段代码
    文本相似度分析
    布隆过滤器
    SQL Server事务
    堆排序(Heapsort)
    游标
    存储过程
    触发器
    Thread部分总结以及小例子
  • 原文地址:https://www.cnblogs.com/lakeslove/p/7203902.html
Copyright © 2011-2022 走看看