假设我有一个应用程序,它或多或少像是使用编辑器功能创建的内容的编辑器和执行者. 我想了两种方法:我可以开发算法和 struct 来执行我的工作,或者我可以在runtime上编写和编译.Java文件.

为了更好地理解我所说的内容,我将创建一个简化的示例. 第一种情况,我将为用户的每次创建SpecialMove的多个实例:

public class SpecialMove{
private String name;
private Type type;
private int damage;
...
}

在第二种情况下,扩展SpecialMove的类将在运行时编写和编译:

    public class SpecialMove{
        protected Type type;
        protected int damage;
        ...
        }

//this class will be written into a separate file and compiled at runtime
    public class FireBall extends SpecialMove{
        protected Type type;
        protected int damage;
        ...
        }

过go 我 Select 使用第二种情况,但它是桌面应用程序.由于我对Android不太熟练,我想问您生成Dalvik字节代码是否会更棘手和/或效率较低,并且总体上有任何优点和缺点.

推荐答案

Playstore 禁止生成收件箱代码. 您可以在JavaScript等沙箱中下载脚本,但无法在运行时下载或编译本机代码. 如果发现这样做,您的应用程序将被删除. 这是Google的一项安全政策,旨在降低恶意软件和特洛伊木马的风险.

事实上,一般来说,在任何平台上在运行时编译代码几乎肯定是一个错误的 Select . 听起来像是调试噩梦. 您有时可能会下载带有插件系统的扩展包,但您不会实时编译它.

Java相关问答推荐

为什么我的画布没有显示在PFA应用程序中?

方法没有用正确的值填充数组—而是将数组保留为null,'

Jooq外键关系

Java FX中的河内之塔游戏-在游戏完全解决之前什么都不会显示

不推荐使用的Environment.getExternalStorageDirectory().getAbsolutePath()返回的值不同于新的getExternalFilesDir(空)?

把一条整型短裤和两条短裤装成一条长的

Java构造函数分支

使用正则表达式从字符串中提取多个值

try 使用Spring集成和MySQL实现发件箱模式时,锁定等待超时

使用While循环打印素数,无法正常工作

来自外部模块的方面(对于Java+Gradle项目)不起作用

Java在操作多个属性和锁定锁对象时使用同步和易失性

如何调整JButton的大小以适应图标?

Java嵌套流查找任意值

如何使用jooq更新记录?

持续时间--为什么在秒为负数的情况下还要做额外的工作?

无限递归Java问题

如何在JSP中从select中获取值并将其放入另一个select

如何以事务方式向ibmmq发送消息

ReturnedRect在升级后反转