建模具有多种可能数据类型的java对象的内存效率最高的方法是什么: 例如
public class Cell{
short type
int _int
double _double
String _string
}
然后实例化此对象,并在设置类型时设置适当的值,同时将所有其他值保留为null。 (我怀疑除了String之外,即使是null,这也会占用内存?)
或者,
public class Cell
{
short type
}
public class StringCell extends Cell
{
String _string
}
其中每个类型都是某个只具有相应数据类型的公共类的子类。 (我怀疑会有一些与子类关联的内存)
答案 0 :(得分:2)
这似乎是generics的经典问题,因为您说“将类型设置为适当的值,而将所有其他值保留为空。”
public class Cell<T> {
T value;
}
然后你可以......
Cell<String> stringCell = ...
Cell<Integer> integerCell = ...
如果Cell实现了一个良好的界面,你甚至可以拥有一个定义良好的异构类型单元集合。
答案 1 :(得分:0)
你在想这个。如果你真的需要这个,那么坚持原语,看看Flyweight pattern是否有帮助。
答案 2 :(得分:0)
如果需要使用int,long,float和double原语,最有效的方法是使用原语本身。但是,将它们设置为null是不可能的。简单地在课堂上宣布它们将占用空间。
使用子类方法可能有效,但这引出了一个问题,基类有什么价值?我倾向于接口,每种基本类型有不同的实现。这样你就没有继承开销(虽然我怀疑有没有)并且你只有你需要的原语。
我仍然怀疑你会在那个界面上放什么。可能是某种Render方法?