【发布时间】:2015-03-09 18:00:59
【问题描述】:
我使用此函数从其名称中实例化一个 java 类,使用其构造函数参数、名称、包和构造函数参数类型:
public Object getObjectFromName(Object[] parameters, String objectName, String packageName, Class[] types) {
try {
Class myClass = Class.forName(packageName + objectName);
if (types == null) {
types = new Class[parameters.length];
for (int x = 0; x < parameters.length; x++) {
types[x] = parameters[x].getClass();
}
}
Constructor constructor = myClass.getConstructor(types);
Object object = constructor.newInstance(parameters);
return object;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
我打算在运行 4.4 的 android 设备上使用它来创建通用片段(按照约定实例化其对象)。
它有效,但我目前只在一个对象上使用它,如果将这种方法用于 5 或 8 个对象,内存泄漏如何?会不会比普通实例化慢很多?
我的意思是,这是:
adapter = (Adapter) getObjectFromName(parameters);
object = (Object) getObjectFromName(parameters);
dao= (Dao) getObjectFromName(parameters);
object2 = (Object2) getObjectFromName(parameters);
object3 = (Object3) getObjectFromName(parameters);
比:太慢(和用户感知):
adapter = (Adapter) new Adapter(parameters);
object = (Object) new Object(parameters);
dao= (Dao) new Dao(parameters);
object2 = (Object2) new Object2(parameters);
object3 = (Object3) new Object3(parameters);
【问题讨论】:
-
从您的问题中不清楚该代码如何发生“内存泄漏”。您能否详细说明您想要实现的目标?
-
我尝试添加更多信息。感谢您的宝贵时间。
标签: java android class object memory