You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jep在Python中修改Java对象JobInitDTO?

解决Jep中Python操作Java对象的问题

Jep会自动将Java对象映射为Python可交互对象,但需遵循规则才能正确调用getter/setter:

关键前提

  • 确保JobInitDTO类为public,所有需访问的getter/setter方法也必须是public,且严格符合JavaBean规范:
    • Getter命名:getXxx()(布尔类型可用isXxx())
    • Setter命名:setXxx(参数类型)

Python端正确操作方式

方式1:直接调用Java方法

在Python中直接调用Java对象的setter/getter方法,语法和Java一致:

def getJobInit(job):
    # 调用setter设置属性
    job.setJobName("test_job")
    job.setPriority(1)
    
    # 调用getter获取属性
    print(job.getJobName())
    
    return job

方式2:属性访问(Jep自动映射)

Jep支持将JavaBean的getter/setter映射为Python属性,可直接像操作Python对象属性一样操作:

def getJobInit(job):
    # 直接设置属性(自动对应setJobName)
    job.jobName = "test_job"
    job.priority = 1
    
    # 直接获取属性(自动对应getJobName)
    print(job.jobName)
    
    return job

Java端额外修正点

你的Java代码存在一处小问题:导入Profiler后,调用时用了p.getJobInit(job)但未将Profiler赋值给p,需修正:

subInterp.eval("import Profiler as p"); 
// 或者直接调用:subInterp.eval("res = Profiler.getJobInit(job)");

同时确认JobInitDTO的类定义符合规范,示例如下:

public class JobInitDTO {
    private String jobName;
    private int priority;
    
    public String getJobName() {
        return jobName;
    }
    
    public void setJobName(String jobName) {
        this.jobName = jobName;
    }
    
    public int getPriority() {
        return priority;
    }
    
    public void setPriority(int priority) {
        this.priority = priority;
    }
}

内容的提问来源于stack exchange,提问作者jenny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:42:50