java调用动态代码 动态执行java代码

为什么Java里的静态方法没办法调用动态方法和变量

可以的,只是需要new一个自身就可以了..看代码演示吧!

成都创新互联-专业网站定制、快速模板网站建设、高性价比额济纳网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式额济纳网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖额济纳地区。费用合理售后完善,十多年实体公司更值得信赖。

public class  静态

{

//非静态变量;

private int m=10;

public static void main(String[] args) 

{

System.out.println("\n\t\t为什么Java里的静态方法没办法调用动态方法和变量\n\n");

init();

}

//这个是静态方法!

private static void init()

{

//开始调用!

new 静态().show();

}

//这个是非静态方法!

private void show()

{

System.out.println("\n我是非静态方法,我调用了非静态的变量:m="+m+"\n\n");

}

}

java怎样能想js那样动态调用方法

class Demo

{

public static void main(String[] args)

{

new Bean().show1();/*在这里动态的调用show1,show2,也就是说更具传来的参数不同动态的调用不同的方法。if和反射都能实现,但是if重复代码太多,感觉不舒服(不是指这个Demo)。*/

}

}

class Bean

{

void show1()

{}

void show2()

{}

}

Java如何实现反射静态加载和动态加载实例代码详解

1.Java动态加载类和静态加载类的区别

new创建对象的方式称作为静态加载,而使用Class.forName("XXX")称作为动态加载,它们俩本质的区别在于静态加载的类的源程序在编译时期加载(必须存在),而动态加载的类在编译时期可以缺席(源程序不必存在)。

2.为什么需要动态加载类

对于我自己的理解,动态加载类增加了程序的灵活性。比如一个程序中有50个功能,但你可能只会使用其中的一个,如果你用的是静态加载的方式,你必须在编译前提供100个功能的所有定义,否则无法编译通过,若你使用的是动态加载机制,则不需要如此大费周章,用哪一个就定义哪一个即可。

静态加载:

public class Office_Static {

public static void main(String[] args) {

//new 创建对象,是静态加载类,在编译时刻就需要加载所有的可能使用到的类

if("Word".equals(args[0])){

Word w = new Word();

w.start();

}

if("Excel".equals(args[0])){

Excel e = new Excel();

e.start();

}

}

}

这个程序编译时必须有Word和Excel这两个类存在才行,即使判断后用不到Excel也要加载

动态加载:

接口OfficeAble :

public interface OfficeAble {

public void start();}

Java动态生成代码

可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的:

1.将你这段字符串输出到一个文件里,用Java类文件的方式命名。

2.调用外部javac命令将该文件编译。

3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。

上面的每一步都能在baidu中找到实现方法,自己发挥吧。

怎样动态执行一段JAVA代码

首先你可以使用输入输出流(或者你说的可能是要用反射得到程序结果来解析)解析做出*.Java文件。

然后可以使用runtime调用Dos下的java编译命令编译取得class文件。

然后使用classloader,反射等组合执行生成的class文件。

当前标题:java调用动态代码 动态执行java代码
文章位置:https://www.cdcxhl.com/article48/doddeep.html

成都网站建设公司_创新互联,为您提供网站维护网站建设企业建站建站公司标签优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站托管运营