首页 > 代码库 > java获取class的几种方式
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复习笔记)
<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco } span.s1 { text-decoration: underline }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco }</style>
java获取class的几种方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。