gpt4 book ai didi

Java继承-如何设置子类实例的值以供其他子类共享(相同)?

转载 作者:行者123 更新时间:2023-12-01 07:38:35 27 4
gpt4 key购买 nike

我想做这样的事情:

Class A 
Class B extends A
Class C extends A

B b = new B();
C c = new C();

b->setField("foo");
c->getField; //return "foo"

是否可以以某种方式实现这些类?

我需要它来持久保存 hibernate 状态,将实体分为两个实体,并将每个实体放在自己的表中。我需要有一些相同的字段(id、一些 FK、一些值)。所以我想在一个子类中设置这些字段,并在第二个子类中具有相同的值。所有子类都需要具有/共享完全相同的值。

有什么想法吗?

最佳答案

无论从 Java 的角度来看这是否可能(确实如此,但以一种迂回的方式),这都不是处理您所需内容的正确方法。如果您使用外键并更新某些持久实体中的值,则应在将其用作外键的实体中更新相应的值。让 JPA/Hibernate 为您处理这件事即可。我建议您阅读 Java EE 教程中的 Java Persistence API 以及 Hibernate 指南,以了解它的作用以及如何处理跨不同实体类和/或表共享/划分的数据。

编辑:由于每个人都在不断地讨论静态字段,这完全不是OP想要的,我将提供一个示例来说明如何做到这一点......

public class Key {
private String value;
public Key(final String value) {
this.value = vale;
}
public String getValue() {
return value;
}
public void setValue(final String value) {
this.value = value;
}
}

public class A {
private final Key field;
public A(final Key field) {
this.field = field;
}
public setField(final String value) {
field.setValue(value);
}
}

public class B {
private final Key field;
public B(final Key field) {
this.field = field;
}
public setField(final String value) {
field.setValue(value);
}
}

//When using...
Key k = new Key("value");
A a = new A(k);
B b = new B(k);

但正如我所说,这只是 Java 级别的解决方案,但在持久性上下文中无法正常工作。您需要阅读有关 JPA 和 Hibernate 的主键和外键的使用。从原始问题中使用的符号来看,我认为发帖者来自非 Java 背景,因此,在不小心重新发明轮子之前,他必须学会如何正确使用这些技术。

关于Java继承-如何设置子类实例的值以供其他子类共享(相同)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8325910/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com