标签: final

接口方法中的最终参数 - 重点是什么?

在Java中,final在接口方法中定义参数并且不遵循实现类中的参数是完全合法的,例如:

public interface Foo {
    public void foo(int bar, final int baz);
}

public class FooImpl implements Foo {

    @Override
    public void foo(final int bar, int baz) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,bar并且在类VS的接口中baz有相反的final定义.

以同样的方式,final当一个类方法扩展另一个类时,不会强制执行任何限制abstract.

虽然final在类方法体内有一些实用价值,但是有没有指定final接口方法参数的点?

java methods final interface class

185
推荐指数
4
解决办法
3万
查看次数

最终定义不明确吗?

首先,一个难题:以下代码打印什么?

public class RecursiveStatic {
    public static void main(String[] args) {
        System.out.println(scale(5));
    }

    private static final long X = scale(10);

    private static long scale(long value) {
        return X * value;
    }
}
Run Code Online (Sandbox Code Playgroud)

回答:

0

下面的剧透.


如果您打印X的规模(长),并重新定义X = scale(10) + 3,印刷品会X = 0那么X = 3.这意味着X暂时设置为0以后设置为3.这是违反final!

static修饰符与final修饰符结合使用,也用于定义常量.最终修饰符表示此字段的值不能更改.

来源:https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html [强调添加]


我的问题:这是一个错误吗?被final定义不清?


这是我感兴趣的代码. X分配了两个不同的值:03.我认为这违反了 …

java final class-variables static-initialization

184
推荐指数
4
解决办法
1万
查看次数

在Java中禁止继承的好理由?

有什么理由禁止Java中的继承,例如使用单个私有无参数构造函数使用final类或类?使方法最终成功的理由是什么?

java inheritance final

163
推荐指数
7
解决办法
6万
查看次数

什么时候应该使用final作为方法参数和局部变量?

我发现了一些建议使用的参考文献(例如)final尽可能多地使用,我想知道它有多重要.这主要是在方法参数和局部变量的上下文中,而不是最终方法或类.对于常数,它显然是有道理的.

一方面,编译器可以进行一些优化,这使得程序员的意图更加清晰.另一方面,它增加了详细程度,优化可能是微不足道的.

这是我应该努力记住的事情吗?

java final

161
推荐指数
8
解决办法
5万
查看次数

方法参数中的final关键字

我经常遇到如下所示的方法:

public void foo(final String a, final int[] b, final Object1 c){
}
Run Code Online (Sandbox Code Playgroud)

如果在不传递最终参数的情况下调用此方法会发生什么.即稍后更改的Object1(因此未声明为final)可以很好地传递给此方法

java final

146
推荐指数
5
解决办法
13万
查看次数

Java的最终版本与C++的const

Java进行C++程序员教程说,(大亮点是我自己的):

关键字final 大致 相当于C++中的const

在这种情况下,"大致"意味着什么?它们不完全一样吗?

有什么区别,如果有的话?

c++ java final const

144
推荐指数
6
解决办法
6万
查看次数

最终静态和静态最终之间的差异

我找到了一个声明代码的代码

private final static String API_RTN_SUCCESS = "0";
private final static String API_RTN_ERROR = "1";

public static final String SHARED_PREFERENCE_CONFIG = "shared_preference_config";
public static final String STARTUP_SETTING_KEY = "startup_setting";
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别或它们是一样的?或者它的不同privatepublic

java static final

141
推荐指数
5
解决办法
7万
查看次数

为什么String类在Java中声明为final?

从我得知该类java.lang.String在Java中被宣布为final时,我想知道为什么会这样?当时我没有找到任何答案,但这篇文章:如何在Java中创建String类的副本?让我想起了我的疑问.

当然,String提供了我所需要的所有功能,并且从未想过任何需要扩展String类的操作,但你仍然永远不会知道某人可能需要什么!

那么,有没有人知道设计师在决定最终时的意图是什么?

java string final

134
推荐指数
5
解决办法
8万
查看次数

为什么Java中没有常量功能?

我试图找出Java中常量的原因我已经了解到Java允许我们使用final关键字来声明常量.

我的问题是为什么Java没有引入Constant(const)功能.由于很多人说它来自C++,所以在C++中我们有const关键字.

请分享你的想法.

java final constants

134
推荐指数
4
解决办法
13万
查看次数

Java`final`方法:它有什么承诺?

在Java类中,可以定义一个方法final,以标记此方法可能不会被覆盖:

public class Thingy {
    public Thingy() { ... }
    public int operationA() {...}
    /** this method does @return That and is final. */
    public final int getThat() { ...}
}
Run Code Online (Sandbox Code Playgroud)

这很清楚,它可能有助于防止意外覆盖,或者表现 - 但这不是我的问题.

我的问题是:从OOP的角度来看,我理解通过定义一个方法final,类设计者承诺这个方法将始终如所描述或隐含的那样工作.但是,这通常可能超出了班级作者的影响,如果该方法所做的事情比传递财产更复杂.

句法约束对我来说很清楚,但OOP意义上的含义是什么?final大多数班级作者在这个意义上是否正确使用?

final方法承诺什么样的"合同" ?

java oop final

134
推荐指数
3
解决办法
9万
查看次数