使用多种数据类型建模java对象的最佳方法

时间:2011-02-04 16:48:36

标签: java memory object subclass

建模具有多种可能数据类型的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

}

其中每个类型都是某个只具有相应数据类型的公共类的子类。 (我怀疑会有一些与子类关联的内存)

3 个答案:

答案 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方法?