Java 使用类还是不使用类
我有一个问题,我是否应该使用一个类来解决这个问题。以下是我的设想: 我将每秒接收包含2组数据的数据包。dataA和dataB。一旦我得到数据,我需要给数据加上时间戳。我需要对数据进行计算并保留答案。我正在考虑为我收到的每个数据包使用一个类。让这个类成为时间戳和所有其他我需要的东西的成员 这是个好主意吗?有更好的办法吗 <我是java新手,我来自C++,我需要在我使用完这些类之后解构这些类,还是java为我做这些?一旦我处理完这个对象,我该如何处理它Java 使用类还是不使用类,java,class,object,Java,Class,Object,我有一个问题,我是否应该使用一个类来解决这个问题。以下是我的设想: 我将每秒接收包含2组数据的数据包。dataA和dataB。一旦我得到数据,我需要给数据加上时间戳。我需要对数据进行计算并保留答案。我正在考虑为我收到的每个数据包使用一个类。让这个类成为时间戳和所有其他我需要的东西的成员 这是个好主意吗?有更好的办法吗
提前谢谢 在Java中,它几乎是所有的类 是的,将包数据及其上的所有操作建模为一个类听起来很合适 不,您不必手动解构对象,当不再有任何对象引用它们时*,它们由垃圾收集器(最终)收集
*实际规则要比这复杂一点,任何无法从活动线程访问的对象都被视为符合垃圾收集条件。这意味着您不必担心对象之间的循环引用。在Java中,它几乎是所有类 是的,将包数据及其上的所有操作建模为一个类听起来很合适 不,您不必手动解构对象,当不再有任何对象引用它们时*,它们由垃圾收集器(最终)收集
*实际规则要比这复杂一点,任何无法从活动线程访问的对象都被视为符合垃圾收集条件。这意味着您不必担心对象之间的循环引用。创建自己的类。这就是Java的方式 除非该类是私有内部类,否则应该使用私有字段和getter/setter方法来定义它,以访问和更新它们。或者,如果不需要更新字段,则只需要setter方法。(从C/C++的角度来看,这听起来可能有点重,但getter和setter从长远来看往往会有回报,而且JIT编译器通常会将调用内联。) 你不应该担心内存管理。Java垃圾收集器将自动清除任何无法访问的实例。在大多数情况下,最好让GC处理这个问题
有一些替代方案(尽管不是很好,国际海事组织):
- 使用通用映射类型,例如
或HashMap
将对象表示为名称-值对。从很多角度来看,这是一个错误的选择:性能差,没有明确的API(用于“对象”),代码更脆弱Properties
- 使用数组或列表类型。这更糟糕,因为您甚至没有字段的“名称”
- 根本不具体化数据包,而是单独传递位。啊
- 使用通用映射类型,例如
或HashMap
将对象表示为名称-值对。从很多角度来看,这是一个错误的选择:性能差,没有明确的API(用于“对象”),代码更脆弱Properties
- 使用数组或列表类型。这更糟糕,因为您甚至没有字段的“名称”
- 根本不具体化数据包,而是单独传递位。啊
- 创建自己的类。这就是Java的方式
除非该类是私有内部类,否则应该使用私有字段和getter/setter方法来定义它,以访问和更新它们。或者,如果不需要更新字段,则只需要setter方法。(从C/C++的角度来看,这听起来可能有点重,但getter和setter从长远来看往往会有回报,而且JIT编译器通常会将调用内联。)
你不应该担心内存管理。Java垃圾收集器将自动清除任何无法访问的实例。在大多数情况下,最好让GC处理这个问题
有一些替代方案(尽管不是很好,国际海事组织):
- 对我来说似乎确实有效。您将获取基本数据,并将其包装到一个类中,该类包含基本数据及其元数据信息。在Java中,您必须有一个类来存储代码,因为您想要封装所有这些东西,所以我认为这是一个很好的设计决策
至于必须自己销毁类,通常不会。Java虚拟机有一个垃圾收集器,用于搜索和销毁未引用的对象。对于“托管”对象(完全位于程序内存“沙盒”中的对象),它通常非常有效。对我来说确实有效。您将获取基本数据,并将其包装到一个类中,该类包含基本数据及其元数据信息。在Java中,您必须有一个类来存储代码,因为您想要封装所有这些东西,所以我认为这是一个很好的设计决策
至于必须自己销毁类,通常不会。Java虚拟机有一个垃圾收集器,用于搜索和销毁未引用的对象。对于“托管”对象(完全位于程序内存“沙盒”中的对象),它通常非常有效。您可以使用不可变类。IMHO这是对远程数据建模的更好方法。在您完成它们之后,如果您取消引用它们,垃圾收集器将为您释放内存
有一份好工作 您可以使用不可变类。IMHO这是对远程数据建模的更好方法。在您完成它们之后,如果您取消引用它们,垃圾收集器将为您释放内存 有一份好工作 那么你说的,那是朗