我成功地运行了Php/Java桥接项目和test.Php但我遇到了一个问题。我想调用一个带有Java Object参数的Java方法Java源代码:
public class OtherClass {
public BaseBean funBean(BaseBean param){
param.setName("Bean Name");
return param;
}
}
public class BaseBean {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String name;
}
PHP脚本:我希望它能那样跑,它不能。
<?php
require_once("java/Java.inc");
//require_once("java/java_helper.php");
class BaseBean{
public $name;
}
$eh = new java("com.anima.service.OtherClass");
$cla = new BaseBean();
$cla->name = "nameTest";
$eh->funBean($cla);
?>
或者有一些解决方案可以帮助我实现这个想法。我想用php对象调用java方法。
你能请任何人帮我做这件事吗。
提前谢谢。
我想您也应该将BaseBean创建为"java实例":
$cla = new java("com.anima.service.BaseBean");
或者,您可以尝试使用java_closure,但我认为在这种情况下,您必须更改java方法中的预期类型,如下所示:
public Object funBean(Object param){ ... }
$cla = new BaseBean();
$cla->name = "nameTest";
$jObjCla = java_closure($cla);
$eh->funBean($jObjCla);
我在PHP/Java桥接文档中发现,Java_closure方法有第三个参数,即创建的包装对象应该实现的Java接口数组:
java_closure(new Listener(), null, array(new Java("java.awt.event.ActionListener")));
Java源代码:
public interface IBaseBean {
String getName();
void setName(String name);
}
public class OtherClass {
public IBaseBean funBean(IBaseBean param){
param.setName("Bean Name");
return param;
}
}
public class BaseBean implements IBaseBean {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String name;
}
PHP脚本:
<?php
require_once("java/Java.inc");
class BaseBean{
public $name;
}
$eh = new java("com.anima.service.OtherClass");
$cla = new BaseBean();
$cla->name = "nameTest";
$jObjCla = java_closure($cla, null, array(new Java("com.anima.service.IBaseBean")));
$eh->funBean($jObjCla );
?>