Библиотека Java для расширенных атрибутов, ввода и проверки - PullRequest
0 голосов
/ 16 ноября 2010

Справочная информация: у меня есть объектная модель, которую необходимо расширить, добавив несколько атрибутов к нескольким типам, которые могут различаться в зависимости от установки. Например, мои «пользовательские» объекты должны иметь несколько расширенных атрибутов. На некоторых сайтах «пользователям» нужны несколько идентификаторов, тогда как на других сайтах «пользователям» нужны другие атрибуты, такие как дополнительные номера телефонов, адреса и даты. Я предпочитаю избегать поддержки нескольких объектных моделей и интерфейсов и вместо этого моделировать их как «расширяемые свойства объекта».

Вопрос: Существует ли библиотека Java, которая может обрабатывать определения типов, предоставляя типизированные пакеты свойств, методы для составления списка свойств, принудительного ввода типов, проверки значений, преобразования значений в и из String и, возможно, помогает в связанных SQL-запросах и обработке форм ...

Мне нужно иметь возможность определять типы и атрибуты программно. Желательно иметь возможность загружать определения типов из файлов конфигурации.

Комментарии приветствуются. Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Если я вас правильно понял, это вряд ли возможно в 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 (за исключением некоторых редких случаев, когда оно все еще имеет взаимодействие, но болезненно).

1 голос
/ 16 ноября 2010

Это сложно в Java.Но, конечно, у вас есть свойства: -)

Вы можете использовать Groovy или Javascript.

В Java вы можете использовать, возможно, string-object-document со свойствами или с XML, Json, Yaml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...