gpt4 book ai didi

java - 匿名内部类与静态字段

转载 作者:行者123 更新时间:2023-12-02 06:23:51 25 4
gpt4 key购买 nike

我更喜欢对不将其状态存储在字段中的类实例使用静态字段,而不是匿名内部类。我认为,如果方法 sort(或其他)经常调用,那么这种做法可以减少内存和 GC 使用量。但我的同事更喜欢在这种情况下使用匿名内部类,并表示 JIT 会对其进行优化。

class MyClass {
//non fields of class

/*access modifier*/ final static Comparator<MyClass> comparator = new Comparator<MyClass>(){
public compare(MyClass o1, MyClass o2){
//comparing logic
}
}
}

使用示例(我更喜欢):

List<MyClass> list = ...;
Collection.sort(list, MyClass.comparator);

使用示例(我的同事喜欢):

List<MyClass> list = ...;
Collection.sort(list, new Comparator<MyClass>(){
public compare(MyClass o1, MyClass o2){
//comparing logic
}
});

1.在 openJDK 中使用匿名内部类进行了优化吗?
2.请告诉我此案例的良好做法。

最佳答案

I think this good practice for to less memory and GC usage if method sort(or other) call very often.

嗯,情况正好相反。如果您担心内存问题,static 字段将一直保留在内存中,直到类被卸载。

但是,这里更关心的是可读性,而不是内存或性能。如果您发现自己使用 Comparator 实例可能是 2-3 次或更多,最好将其存储在字段中,以避免重复代码。更好的是,将字段标记为final。如果您只想使用它一次,则将其存储为 static 字段是没有意义的。

But my colleague prefer to use anonymous-inner-classes for this case saying that JIT will optimize it.

我不明白你的同事说的是什么样的优化。您应该向他/她询问进一步的澄清。 IMO,这只是一个不成熟的优化,你真的不应该被打扰。

关于java - 匿名内部类与静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20770557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com