给定一个定义类的字符串,比如“package com.teasp.compile; public class Test{ public static void main(String[] args){System.out.println(\"compile test.\");} }”,怎么将其转换成Class对象呢?下面的代码可以实现该功能:
/** * Java6及以上才可用。 * 如果ToolProvider.getSystemJavaCompiler();返回的是null,说明jre的lib里面 * 没有tools.jar,要将jdk的lib中的tools.jar复制到jre的lib中。 * 设计作者: teasp * 信息描述: */ public class CompileTest { public final static Class<?> compile(String name, String content) { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); StrSrcJavaObject srcObject = new StrSrcJavaObject(name, content); Iterable<? extends JavaFileObject> fileObjects = Arrays.asList(srcObject); String flag = "-d"; String outDir = System.getProperty("user.dir") + "/bin"; Iterable<String> options = Arrays.asList(flag, outDir); CompilationTask task = compiler.getTask(null, fileManager, null, options, null, fileObjects); boolean result = task.call(); if (result == true) { System.out.println("Compile it successfully."); try { return Class.forName(name); } catch (ClassNotFoundException e) { e.printStackTrace(); } /*ClassLoader loader = CompileTest.class.getClassLoader(); Class<?> cls; try { cls = loader.loadClass(name); return cls; } catch (ClassNotFoundException e) { e.printStackTrace(); }*/ } return null; } public static void main(String[] args) { Class<?> cls = compile("com.teasp.compile.Test", "package com.teasp.compile; public class Test{ public static void main(String[] args){System.out.println(\"compile test.\");} }"); System.out.println(cls.getCanonicalName()); try { Method method = cls.getMethod("main", String[].class); System.out.println(method.getName()); method.invoke(null, new Object[]{new String[]{}}); } catch (Exception e) { e.printStackTrace(); } } private static class StrSrcJavaObject extends SimpleJavaFileObject { private String content; public StrSrcJavaObject(String name, String content) { super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE); this.content = content; } public CharSequence getCharContent(boolean ignoreEncodingErrors) { return content; } } }
相关推荐
2)int indexOf(String str):查看给定字符串在当前字符串中的位置。 首先该方法会使用给定的字符串与当前字符串进行全匹配,当找到位置后,会将给 定字符串中第一个字符在当前字符串中的位置返回。常用来查找...
541. 反转字符串 II 给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 ...给定字符串的长度和 k 在[1, 10000]范围内。 PS: 暴力 欢迎评论 class Solution { public static void swap(char [] a,int begin
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的子串。 示例1: 输入: s1 = “ab” s2 = “eidbaooo” 输出: True 解释: s2 包含 s1 的排列之...
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: “aab” 输出: [ [“aa”,”b”], [“a”,”a”,”b”] ] 思路:搜索回溯,搜索过程中检查是否是...
题目意思是给一个字符串aabbbassa,消除掉超过两次连续的字母,直到不能消除。 package 快手笔试; import java.util.Scanner; import java.util.Stack; public class Solution1 { public static void main(String...
方法包括:获得学号,获得班号,获得姓名,获得性别,获得年龄,获得班 级总人数,修改学号,修改班号,修改姓名,修改性别,修改年龄以及一个toString() 方法将Student类中的所有属性组合成一个字符串。定义一个...
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 示例 1: 输入: “aba” 输出: True 示例 2: 输入: “abca” 输出: True 解释: 你可以删除c字符。 注意: 字符串只包含从 a-z 的小写字母。字符...
给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。 举个例子,A = “abcd”,B = “cdabcdab”。 答案为 3, 因为 A 重复叠加三遍后为 “abcd...
给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数。 示例: 输入: S = “abcde” words = [“a”, “bb”, “acd”, “ace”] 输出: 3 解释: 有三个是 S 的子序列的单词: “a”, “acd”, ...
③循环②步直到B状态为终态时停止则该字符串符合该文法或a指向最后一个字符时都没到终态停止则该字符窜不符合该文法。 2.3 实验流程 ①预习实验,实验前阅读实验指导书和阅读书本。 ②通过书本了解判断文法的原理...
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...
在程序设计时,界面上用户输入的基本上都是字符串,如果字符串输入一个出生年月,如何把该字符串转换成Date类型呢?可以使用SimpleDateFormat的parse()方法。 代码演示:SimpleDateFormat解析日期 import java.text...
522. 最长特殊序列 II 给定字符串列表,你需要从它们中找出最长的特殊序列。最长特殊序列定义如下:该序列为某字符串独有的最长子序列...给定字符串列表的长度将在 [2, 50 ] 之间。 PS; 查找最长的非子序列问题 class
* 将给定字符串首字母修改为小写 * @param str 字符串 * @return 转换后的字符串 */ private String firstUpper(String str){ return (str.charAt(0)+"").toUpperCase()+str.substring(1); } /** * 设置...
//加载数据库引擎,返回给定字符串名的类 }catch(ClassNotFoundException e) { //e.printStackTrace(); System.out.println("加载数据库引擎失败"); System.exit(0); } System.out.println("数据库驱动成功...
前面一篇图文详解JAVA实现哈夫曼树对哈夫曼树的原理与java实现方法做了较为详尽的描述,这里再来看看C++实现方法。 具体代码如下: #include using namespace std; #if !defined(_HUFFMANTREE_H_) #define _...
虽然将编译结果,并且外观将达到您的期望,但是此脚本有些无法为您完成的事情(例如,使用枚举而不是字符串..)。 一定要查看输出内容:) 用法 usage: json2Gson.py [-h] [--class_name NAME] Convert a sample ...
LeetCode判断字符串是否循环 LeeCode- Java 记录Leecode刷题思路与知识点 题目分类 Hash相关 题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的...
* 读取文件并返回为给定字符集的字符串. * @param fileName * @param encoding * @return * @throws Exception */ public static String readFileAsString(String fileName, String encoding) throws ...
|--x.toString():用于把一个 Number 对象转换为一个字符串,并返回结果 19.正则表达式对象:(专门用于查找和验证) reg.test(‘要验证的完整字符串’)匹配返回true,否则返回false 强调:如果正则表达式使用了^和$...