0

我成功运行了 Php/Java 桥接项目和 test.php,但我遇到了问题。我想用 Java Object 参数 Java Source 调用 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 方法。

你能请任何人帮助我吗?

提前致谢。

4

1 回答 1

0

我想您也应该将 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 );
?>
于 2015-02-11T10:52:32.497 回答