JavaScript的对象怎么在java后台调用

JavaScript的对象怎么在java后台调用,第1张

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还是类名都可以访问到他,而且两种方式访问到的是同一个对象。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/13169843.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-15
下一篇 2023-06-15

发表评论

登录后才能评论

评论列表(0条)

保存