java获取class的几种方式

Posted lakeslove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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复习笔记)  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于java获取class的几种方式的主要内容,如果未能解决你的问题,请参考以下文章

java解析xml的几种方式哪种最好?

Java文件下载的几种方式

Java文件下载的几种方式

java解析xml的几种方式哪种最好?

Java 创建对象的几种方式

获得Class类对象的几种方法