扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的: 1.将你这段字符串输出到一个文件里,用Java类文件的方式命名。 2.调用外部javac命令将该文件编译。 3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。 上面的每一步都能在baidu中找到实现方法,自己发挥吧。
10年积累的做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有建邺免费网站建设让你可以放心的选择与我们合作。
求采纳
可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的:
1.将你这段字符串输出到一个文件里,用Java类文件的方式命名。
2.调用外部javac命令将该文件编译。
3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。
上面的每一步都能在baidu中找到实现方法,自己发挥吧。
Java代码正常是静态编译成字节码,由对应平台的JVM加载执行,静态编译无法动态扩展功能。动态编译有两种方式实现:
从源码编译,需要调用Java Compiler,程序需要运行于JDK(而不是JRE)之上。
动态字节码生成技术(如CGLib、ASM)创建类。
动态编译可以简化代码,增强类功能,但也带来了代码复杂度,线上不易维护。
(Write once, run anywhere) 目标Java类文件包含字节代码同平台JVM所使用Java字节代码仅文件形式存于磁盘通网络式载存于内存JVM类加载器负责包含字节代码字节数组(byte[])定义Java类某些情况能需要态 Java字节代码或已Java字节代码进行修改候需要用本文要介绍相关技术首先介绍何态编译Java源文件
态编译Java源文件
般情况发员都程序运行前编写完全部Java源代码并且功编译些应用说Java源代码内容运行刻才能确定候需要态编译源代码Java字节代码再由JVM加载执行典型场景算竞赛线评测系统(PKU JudgeOnline)允许用户传Java代码由系统台编译、运行并进行判定态编译Java源文件使用做直接程序调用Java编译器
JSR 199引入Java编译器API使用JDK 6通API态编译Java代码比面代码用态编译简单Hello World类该Java类代码保存字符串
public class CompilerTest {
public static void main(String[] args) throws Exception {
String source = "public class Main { public static void main(String[] args) {System.out.println(\"Hello World!\");} }";
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
StringSourceJavaObject sourceObject = new CompilerTest.StringSourceJavaObject("Main", source);
Iterable fileObjects = Arrays.asList(sourceObject);
CompilationTask task = compiler.getTask(null, fileManager, null, null, null, fileObjects);
boolean result = task.call();
if (result) {
String[] str={"名字1","名字2","名字3"};
for(int i=0;iv.length;i++){
JLabel lbl = new JLabel(str[i]);
int x=i%4*80+40; //4个一排 间隔80 第一个x从40开始
int y=i/4*40+40;
lbl[i].setBounds(x, y, 80, 20);
panel.add(chb[i]);
}
这个也能实现的,这就得利用java的动态编译,java中可以利用代码临时生成java文件,并且执行编译,运行,但这个有一点麻烦,还要用到java中的反映机制.
apache的commons-beanutils包中就有这样的方法,hibernate中映射类中的get与set方法是存在的.最好不要用临时生成java文件,动态编译.
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流