JavaScript的对象怎么在java后台调用
// java调用js脚本的例子ScriptEngineManager scriptEngineMgr = new ScriptEngineManager();
ScriptEngine jsEngine = scriptEngineMgrgetEngineByName("JavaScript");
StringBuffer sb = new StringBuffer();
// 组装js代码,也可以从文件读入脚本到sb变量
jsEngineput("myContext", myContext);// 放置其他参数
jsEngineeval(sbtoString());// 解析、执行脚本在A类中定义一个方法用以生成B类的对象:
public B getB()
{
return new B();
}
然后在2包中new 出A类的对象
A a=new A();
agetB(); //生成B类对象
……
不过,这样做还是有很多的限制。如果确实要用,最好还是把B类也定义成public吧。办法有很多种,最简单两种
1 传给一个AB都可以访问的第三方,例如网络中的session,某个对象的静态变量等等。
2 A调用B的方法,把对象传给B。常见是B中的setXXX(YYY yyy)
看谁的方法了
如果是普通方法,就是用this
如果是static标识的,那就用当前类
如果是native,那你得找jni关联的c代码
如果想要调用某个已经实例化的对象,那么只有把那个对象的引用传到你当前对象才可能,不然没办法,或者说你只需要那个类的方法,那你在代码里面创建一个新对象调用就好了。
你报错是因为你在对象本身创建一个自己的对象,实际上进入了死循环了,你试想一下,你每次创建TestDiaoYongLingWaiLeiDuiXiang2对象的时候,这个对象又要通过new 创建一个TestDiaoYongLingWaiLeiDuiXiang2对象,然后这个对象创建的时候又去new 一直没有穷尽,所以就把内存撑爆了。
static修饰这个对象就是把对象的实例化提前了,也就是说这个对象会在jvm运行时就先加载到内存,而不是你new的时候,所有new出来的对象的这个属性都指向这一个地方,所以你无论用new还是类名都可以访问到他,而且两种方式访问到的是同一个对象。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)