有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    如果getFoo结果是costant的,并且不需要在运行时进行评估,那么第一个选项就是

  2. # 2 楼答案

    Getter在这里毫无意义,很可能会被JVM内联。只要坚持公众的观点

    封装背后的想法是保护变量的不必要更改,并隐藏内部表示。对于常数,这没有多大意义

  3. # 3 楼答案

    将类外的变量用作:

    public def FOO:Integer = 5; 
    

    如果封装不是你的首要任务。否则,请使用第二个变量,以便公开方法而不是变量

    private static final int FOO = 5;
    ...
    public static getFoo() { return FOO; }
    

    对于代码维护来说,不依赖变量也是一种更好的做法。记住“过早优化是万恶之源”

  4. # 4 楼答案

    我将继续使用getFoo(),因为它允许您在未来更改实现,而无需更改客户端代码。正如@Tomasz所指出的,JVM可能会内联到您当前的实现中,因此您需要付出很大的性能代价

  5. # 5 楼答案

    不直接在代码中使用常量有一个原因

    假设FOO以后可能会改变(但仍然保持不变),比如public static final int FOO = 10;。只要没有人愚蠢到直接硬编码值,就不应该破坏任何东西,对吗

    不会。Java编译器会将上面的Foo之类的常量内联到调用代码中,即someFunc(FooClass.FOO);变成someFunc(5);。现在,如果你重新编译你的库而不是调用代码,你可能会遇到意想不到的情况。如果你使用一个函数,这是可以避免的——JIT仍然可以很好地优化它,所以没有真正的性能影响

  6. # 6 楼答案

    既然最后一个变量以后不能更改,如果你想把它作为一个全局常量,只需公开它就行了,不需要getter