-1

背景:我有一个对象模型,需要通过向几种类型添加多个属性来扩展,这些属性可能因安装而异。例如,我的“用户”对象需要有一些扩展属性。在某些站点上,“用户”需要多个标识符,而在其他站点中,“用户”需要其他属性,例如额外的电话号码、地址和日期。我更愿意避免维护多个对象模型和接口,而是将其建模为“可扩展对象属性”。

问题:是否有一个 Java 库可以处理类型定义、提供类型化的属性包、列出属性的方法、强制类型化、验证值、将值与字符串相互转换,并可能有助于相关的 SQL 查询和表单处理...... ?

我需要能够以编程方式定义类型和属性。需要能够从配置文件中加载类型定义。

非常欢迎评论。谢谢你。

4

2 回答 2

2

如果我说得对,那么在具有 trait mechanizm 的 scala 中几乎不可能,这就像接口一样,您可以在某些类中混入,但可能包含代码,因此您无需在使用它们时一直重写抽象方法。

trait Stackoverflow {
   val foo = "FOO"
}

trait MetaStackoverflow {
   val bar = "BAR"
}

class User(val name: String)

现在在 REPL:

scala> val u = new User("jjmontes") with Stackoverflow with MetaStackoverflow   
//u: User with Stackoverflow with MetaStackoverflow = $anon$1@8825a5

scala> u.bar  
//res0: java.lang.String = BAR

scala> u.foo  
//res1: java.lang.String = FOO

或者像这样:

scala> class UserA(name: String) extends User(name) with Stackoverflow
//defined class UserA

scala> val u = new UserA("jjmontes")
//u: UserA = UserA@1aecf45

scala> u.foo
//res8: java.lang.String = FOO

scala> u.bar
<console>:12: error: value bar is not a member of UserA
              u.bar

Scala 与 Java 几乎完全互操作(除了一些罕见的情况,它仍然具有互操作,但很痛苦)。

于 2012-03-13T08:40:16.040 回答
1

在java中很难。但是,当然,你有属性:-)

您可以使用 Groovy 或 Javascript。

在 java 中,您可能可以使用一些string-object-document、Properties 或 XML、Json、Yaml。

于 2010-11-16T13:04:22.117 回答