-1

背景: いくつかのタイプにいくつかの属性を追加して拡張する必要があるオブジェクト モデルがありますが、これはインストールによって異なる可能性があります。たとえば、「ユーザー」オブジェクトにはいくつかの拡張属性が必要です。一部のサイトでは「ユーザー」に複数の識別子が必要ですが、他のサイトでは「ユーザー」には追加の電話番号、住所、日付などの属性が必要です。私は複数のオブジェクト モデルとインターフェイスを維持することを避け、代わりにこれを「拡張可能なオブジェクト プロパティ」としてモデル化することを好みます。

質問: 型定義を処理し、型指定されたプロパティ バッグ、プロパティを一覧表示するメソッド、型指定の強制、値の検証、文字列との間での値の変換、および関連する SQL クエリとフォーム処理を支援するメソッドを提供する Java ライブラリはありますか? ?

タイプと属性をプログラムで定義できる必要があります。構成ファイルからタイプ定義をロードする機能が望ましいでしょう。

コメントは大歓迎です。ありがとうございました。

4

2 に答える 2

2

私が正しく理解していれば、特性機構を備えた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 に答える