Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java(android)重用对象_Java_Android_Object - Fatal编程技术网

Java(android)重用对象

Java(android)重用对象,java,android,object,Java,Android,Object,我有一个对象,它将由SQLite数据库游标中的字段构造而成 然后将使用对象中的方法对相同类型的对象进行测试并返回分数。将有许多这样的测试被执行,我想重用这个对象——只要在每次需要时从数据库中重新初始化它。我想这样做是为了避免分配过多的内存 有没有一种方法可以重复使用构造函数每次重建对象而不创建新的对象 或者我需要创建一个公共方法来从游标填充字段,然后在构造函数中调用它吗 谢谢,m您不能使用构造函数-它仅在创建新对象时使用。所以你需要根据答案的结尾写一个方法 但是,我想问您是否真的需要这样做—您查

我有一个对象,它将由SQLite数据库游标中的字段构造而成

然后将使用对象中的方法对相同类型的对象进行测试并返回分数。将有许多这样的测试被执行,我想重用这个对象——只要在每次需要时从数据库中重新初始化它。我想这样做是为了避免分配过多的内存

有没有一种方法可以重复使用构造函数每次重建对象而不创建新的对象

或者我需要创建一个公共方法来从游标填充字段,然后在构造函数中调用它吗


谢谢,m

您不能使用构造函数-它仅在创建新对象时使用。所以你需要根据答案的结尾写一个方法


但是,我想问您是否真的需要这样做—您查询数据库的频率有多高,您是否确实确定这是一个性能瓶颈?它可能是(我知道移动开发的限制),但它也会使代码不那么优雅,并很容易导致微妙的错误。。。至少,您应该在更改前后测量性能,以了解改进情况。

使用单例设计模式。如果您有许多相同类型的类似对象,可以使用Flyweight设计模式。嗨,Jon,谢谢您的回答。目前,我有一个对象,它包含大量的primative类型和字符串,这些类型和字符串由用户输入的条件填充,这些条件用于建立搜索。然后,另一个类使用getter方法将搜索项与数据库中的相关字段进行比较。它运行得相当快。事实就是这样。我在考虑将评分方法移动到这个特定方法的类定义中,让该方法接受相同类型的对象,然后根据对象的相似程度生成评分。你是不是建议我创建新对象,让GC根据需要删除它们?@mAndroid:是的-直到你发现GC对您来说执行得不够好,您应该编写最清晰、最可维护的代码来完成任务。我刚才在这里读到,您不应该不必要地分配内存,在这种情况下似乎是这样的。-它也像你建议的那样建议基准测试。@mAndroid:是的-特别是,它说:“本文档是关于Android特定的微优化,所以它假设你已经使用了评测来精确地计算出需要优化的代码,并且你已经有了一种方法来衡量效果(好或坏)你可能会创建多少个对象?