java更改指向实例的所有对象
假设我有一个接口Player
和两个派生自它的类:LoadedPlayer
和UnloadedPlayer
,LoadedPlayer
在计算机需要它时使用,并保存在ram内存中,UnloadedPlayer
在计算机不需要它时使用,并保存到一个文件中,实际上实例只包含对该文件的引用。
如何在加载和卸载之间切换,而不创建丑陋的box类并将其嵌入
你可以在下面搜索框中键入要查询的问题!
假设我有一个接口Player
和两个派生自它的类:LoadedPlayer
和UnloadedPlayer
,LoadedPlayer
在计算机需要它时使用,并保存在ram内存中,UnloadedPlayer
在计算机不需要它时使用,并保存到一个文件中,实际上实例只包含对该文件的引用。
如何在加载和卸载之间切换,而不创建丑陋的box类并将其嵌入
# 1 楼答案
你可以通过保存一个引用所使用的所有地方的列表来实现这一点。这样可以根据需要更改所有引用,但这有点容易出错
另一种方法是使用持久化的地图,并通过一个键(例如唯一的名称)引用玩家。当地图被持久化时,你不需要知道它什么时候被写入磁盘,但是你需要确保地图在你为播放器更改数据时被更新
这类地图的例子有编年史地图、MapDB、Hazelcast、Terracotta、栅格增益、一致性,不胜枚举
如果有自己的
Reference
类型,可以简化代理。你可以这样做如果你需要知道玩家何时被使用,你可以这样做
这样你就可以坚持住。使用时锁定播放器,完成后释放