在黑莓应用程序中实例化给定.class文件的对象

时间:2012-07-03 12:31:28

标签: blackberry java-me instantiation .class-file

我正在编写一个黑莓应用程序 - 在应用程序启动后,我需要从数据库中获取一个.class文件(或者其他类似的.COD文件?)(我可能需要创建一个网页,从中获取文件)然后实例化它并调用它的方法......任何人都可以帮助我吗?请?!?

重点是让学生在手机上获取代码,看看方法会返回什么。老师会编写一个返回一些整数的简单编程方法。学生需要能够将该方法应用到应用程序中。他们可以看到代码并输入他们希望返回的方法。然后他们需要能够运行该方法,以便能够看到该方法返回的内容......

基本上我希望能够对一些不在我的黑莓手机上的代码进行单元测试......

我看到一个应用程序的广告做了类似的事情......我怎么能这样做: .net for BlackBerry(C和VB.NET) 如果您正在学习ASP.NET,C#或Visual Basic.NET,那么此应用程序允许您键入.NET代码 您的BlackBerry®,并在几秒钟内查看输出。这是尝试.NET代码片段的绝佳方式 无需在PC上启动Visual Studio。

使用此应用程序编写的代码存储在远程服务器上,因此可以从其他设备调用, 所以它可以与这个应用程序的其他用户共享。

2 个答案:

答案 0 :(得分:1)

我认为您需要将应用程序二进制文件放在服务器上,以便学生能够下载OTA。 (http://blackberrystorm.wikidot.com/setup-blackberry-ota-applications

然后,您可以使用全局事件在您的应用和其他应用之间进行通信。 (http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/800620/What_Is_-_Global_Events_and_Global_Event_Listeners.html?nodeid=800527&vernum=0

但是在设备上实时访问其他应用程序中的方法..,我认为这是不可能的。

答案 1 :(得分:1)

BlackBerry JVM不支持反射,但是如果应用程序都扩展了在基本应用程序中定义的类,并且您可以在下载的软件中派生该类的完全限定名称,则可以执行类似操作:

abstract public class MyDemoObject {
    abstract public void myDemoMethod();
}

然后:

Class class = Class.forName("org.some.sample.ClassName");
MyDemoObject obj = (MyDemoObject)class.newInstance();
obj.myDemoMethod();

在下载的应用中:

package org.some.sample

public class ClassName extends MyDemoObject {
    public void myDemoMethod() {
        System.out.println("package org.some.sample.myDemoMethod()");
    }
}

有点笨重,但确实有效。 myDemoMethod将在基本应用程序的上下文中运行,这对于学习BlackBerry OS的编程来说并不是一个糟糕的教训。