Java创建动态类

时间:2010-08-30 20:27:05

标签: java android class dynamic

我有2个问题,我希望有人可以帮助我。有没有办法用android / java动态创建一个类,还可以在类中添加变量?例如,我想做这样的事情:

Class c = new Class();
c.name = 'testing';
c.count = 0;

c.getName = new function(){
  return c.name;
}

只是想知道这是否可行或是否有其他方法可以做到这一点。基本上我想构建一个可以将数据作为对象使用的对象。

2 个答案:

答案 0 :(得分:2)

不,您在Java中描述的语法是不可能的。我不确定你想要在那里完成什么。如果要创建一个用于动态保存数据的类,可以创建一个anoynmous内部类。

Object object = new Object() {
  private String name = testing;
  private int count = 0;

  public String getName() {
    return name;
  }
}

通常,我不会将它用于数据对象。此功能通常用于接口的匿名实现,以支持回调等。

答案 1 :(得分:1)

通常不会这样做。它可以通过反射来完成,但是这是一个相当糟糕的想法 - 这种类型的代码对于调试来说非常烦人,在IDE中无法正确交互(例如,按住ctrl-click一个c.getName的实例就可以了能够跳转到定义方法的位置,它可能是一个相当大的性能命中等等。

但是,对于某些通用工具,这是可能的。我相信Hibernate可能有能力从数据库表创建类。

然而,最常见的用途是在测试框架中使用的模拟 - 它们几乎可以完全按照您的需要进行操作。使用TestNG查看EasyMock。

一般而言,您最好只定义业务类并使用它,而不是尝试创建一些为您生成类的抽象框架。