0

我在使用 JNI 从我的导入中获取对象时遇到问题。是否可以?例如,假设我的 java 文件中有这个:

import foo.Bar;

public class MyClass {
    public MyClass(){
        Bar.runMethod();
    }
}

我可以在不更改 Java 代码的情况下使用 JNI 引用“Bar”吗?我只能创建一个新的“Bar”对象,这不是我想做的。

编辑:为了扩展这一点, runMethod() 做了这样的事情:

public class Bar{
    public static void runMethod(){
        Bar inst = new Bar();
        ...more code...
    }
}

所以现在有一个 Bar 的实例漂浮在周围,我不确定如何使用 JNI 访问它。如果 bar 具有切换按钮、单选按钮等内容,则我无法使用 JNI 来操作它们,因为我无法获得引用它的作业对象。有什么我可以做的,还是我必须求助于编辑 Java 文件?(我不维护代码,所以这是最后的手段)

4

3 回答 3

0

您的问题或您的标题不清楚,但您当然可以将 Bar 实例传递给本机方法或 Bar.class,或从其中找到 Bar.class。

于 2013-09-25T23:59:52.157 回答
0

JNI 可以访问任何对象的任何方法,包括 Java 类的私有方法。然而,这个问题并没有提供足够的具体细节让我们充分理解上下文以帮助您。

Oracle 参考有点迟钝,但如果您提供 JNI 方面的代码示例,我们可能会为您揭开它的神秘面纱:http: //docs.oracle.com/javase/1.5.0/docs/guide/ jni/spec/functions.html#wp15982

于 2013-09-26T00:30:08.733 回答
0
public class Bar{
public static void runMethod(){
    Bar inst = new Bar();
    ...more code...
}

当函数完成时,方法“runMethod”中名为 inst 的 Bar 实例不再存在,除非它稍后存储在“更多代码”部分中的静态类变量下,因此不会有实例供您参考.

JNI 只会让您访问类成员和方法,当然不是本地方法变量。

于 2013-09-27T20:48:01.337 回答