从子类创建超类的正确方法
我有一个客户端服务器应用程序。
客户端有一个类:Item.java
public class Item
public string name;
public string size;
,服务器有一个类 PersistableItem.java,它允许我使用 JPA 存储它
public class PersistableItem extends Item
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long Id;
并将其发送到执行 addItemToServer 方法的服务器:
public void addItem( Item item){
//create PersistableItem from item
DAO.save([paramerter = PersistableItem]);
}
在我的服务器方法中,我是否将项目转换为 PersistableItem?我是否在 PersistableItem 中创建一个接受 Item 的构造函数?
这里正确的设计是什么?
I have an client-server application.
The client has a class: Item.java
public class Item
public string name;
public string size;
and the server has a class PersistableItem.java which lets me store it using JPA
public class PersistableItem extends Item
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long Id;
and sends it to the server which executes the addItemToServer method:
public void addItem( Item item){
//create PersistableItem from item
DAO.save([paramerter = PersistableItem]);
}
In my server method do I cast the item as PersistableItem? Do i make a constructor in PersistableItem that takes in a Item?
What's the proper design here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正如您所建议的,您可以在 SomePersistedItem 中创建一个采用 SomeItem 的构造函数。在构造函数中,您使用名称和大小调用 super,以便正确填充 SomePersistedItem。
你只需添加它即可。
假设您在 SomeItem 中有一个带有名称和大小的构造函数。否则你可以使用任何你必须的方法来构建SomeItem(工厂,设置器......)
As you suggested, You can create a constructor in SomePersistedItem that takes a SomeItem. In the constructor, you call super with the name and size, so you have your SomePersistedItem correctly populated.
And you just add it.
That's assuming you have a constructor in SomeItem that takes a name and size. Else you use whatever method you have to build SomeItem (Factory, setters...)
我会让你的持久项目扩展一个接口
I would make your persistable item extend an interface