class ABC {
private int[] variable;
public int[] getVariable() {
return variable;
}
public ABC() {
variable = new int[123456];
}
}
class DEF extends ABC {
public int[] getVariable() {
return new int[0];
}
}
variable
在 中使用ABC
,但在 中完全未使用且不需要DEF
。但是我看不到任何适当的方法来防止在 中创建这个大数组DEF
,因为总是必须执行一些超类的构造函数。我只看到一种不优雅的方式:ABC 的新“假”构造函数:
protected ABC(boolean whatever) {}
然后DEF
我可以写:
public DEF() {
super(true);
}
它有效 -variable
未初始化。
但是,我的问题是 - 我可以更正确地解决这个问题吗?
也许如果变量未使用,编译器会自动删除她?当这种功能可能有用时,这种情况很常见。