我无法在以下设计之间进行选择,因为我不知道它们在允许同一属性使用不同类型时的区别:
abstract class A {T:t} class BT1 extend A<T1> {}
这将继承抽象泛型类
abstract class A {G:t} class BT1 extend A {T1:t}
这将是变量隐藏 class A<T extend G> {T:t}
这个类将被示例化如下: new class A<T1>
这三种设计有什么不同?
jpa能为案例3检索具有特定类型变量的实体吗?
jpa如何处理泛型和继承的混合?
1条答案
按热度按时间os8fio9y1#
“这三种设计之间有什么区别?”
热释光;博士-
设计#1是“经得起未来考验的”;“开放扩建”
设计#2-正如您所写的-将无法编译,因为
BT1{T1:t}
不是一个A {G:t}
设计#3共享#1的“优点”之一;它也是“未来的证明”#3的“缺点”是它是一个具体的类这是基于我做的这个实验,让你的问题对我来说不那么抽象/更具体。
长话短说
这是一个这样的例子——当给出几种设计的选择时——选择“最佳设计”取决于你的选择是否正确地达到你想要的任何目的。
您的第二个问题(关于jpa)意味着您的意图可能是:“我想将我的应用程序的数据层与orm框架集成”。
“jpa是否可以为案例3检索具有特定类型变量的实体?”
我怀疑。如果你仔细想想,orm几乎不可能管理它。比方说,你注解了这样一个类,比如…
假设您的应用程序示例化了以下三种不同的参数化类型
A< T extends G >
就像…A< String > aStringNTT = new A< >( … )
A< Long > aLongNTT = new A< >( … )A< Date > aDateNTT = new A< >( … )
…然后您(或jpa/hibernate)必须编写的ddl才能将上述内容持久化到
IMPOSSIBLES
table应该是…不存在这样的语法来定义具有动态变化的数据类型的数据库表列。无论如何,在我所知道的任何sql实现中都没有。
“jpa如何处理泛型和继承的混合?”
以我的经验,这种混合处理得很好。我几个月前就实现了…
…jpa处理了这个和其他几个混凝土
@Entity
s成功…