标签: final

以全部大写形式声明记录器并使其成为最终记录是否有所不同?

有什么理由这样做:

private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
Run Code Online (Sandbox Code Playgroud)

而不是这个?

private static Logger logger = LoggerFactory.getLogger(Main.class);
Run Code Online (Sandbox Code Playgroud)

我不承认一个人的语法上的好处是什么.两者似乎都很好.

java syntax static final uppercase

0
推荐指数
1
解决办法
1382
查看次数

Progress-4GL 中的 Final/const 关键字等效

如果我在 Java 中有一个具有不可变成员的类,我会这样做:

class MyClass {
    private final String name;
    private final int id;
    myClass(String name, int id) {
        this.name = name;
        this.id = id;
    }
    String getName() { return name; }
    int getId() { return id; }
}
Run Code Online (Sandbox Code Playgroud)

在 Progress-4GL 中,您通常会看到这样的内容:(请不要讲匈牙利符号。我也讨厌它,但它在 Progress 社区中很常见,所以我只接受它。)

CLASS MyClass :

    DEFINE VARIABLE mcName as CHARACTER NO-UNDO.
    DEFINE VARIABLE miId   as INTEGER   NO-UNDO.

    CONSTRUCTOR PUBLIC MyClass(INPUT ipcName AS CHARACTER,
                               INPUT ipiId AS INTEGER):
        ASSIGN mcName = ipcName
               miId   = ipiID.
    END. /* constructor(char,int)*/
END …
Run Code Online (Sandbox Code Playgroud)

final progress-4gl openedge

0
推荐指数
1
解决办法
983
查看次数

为什么Java内部类需要外部类的变量是最终的?

可能重复:
Java - 内部类和局部变量
如何将变量标记为final允许内部类访问它们?

Local Inner类不仅可以访问实例变量,还可以访问方法的局部变量(在其中定义它们),但必须声明局部变量final.

为什么final在这种情况下必须声明局部变量?

java final

0
推荐指数
1
解决办法
5693
查看次数

你能用C#编写最终函数吗?

我想知道你是否可以用C#编写final(Java)函数/方法.我能看到一些C#最终函数/方法的例子吗?

有相反的问题在这里.

c# java final

0
推荐指数
1
解决办法
132
查看次数

试图了解最终变量

最终变量.我已经阅读了本网站上可以找到的所有内容,以及其他内容,我几乎了解它们,但我仍然有点困惑.

所以,我知道为什么我们将变量声明为final的官方答案:它锁定变量并阻止它被重新初始化.我的问题是这些:

  1. 如果无法重新初始化,它的价值仍然可以改变吗?例如:

    final int a = 1;
    a = a + 1;
    
    Run Code Online (Sandbox Code Playgroud)

    这种代码是否仍然有用,或者"final int a"会永久锁定值1吗?

  2. 如果int a即使在宣布最终值之后仍然可以改变上述值,那么最终的意义何在?

我想问题2是我最大的问题.我一直看到关于它如何锁定变量的所有这些解释,有些人甚至说他们将大部分变量声明为最终变量,但这样做的动机对我来说没有意义.

java final

0
推荐指数
1
解决办法
72
查看次数

最终字符串的最终数组是否仍然可变?

假设我有一个数组

public static final String[] fooArray ={ Foo.a, Foo.b, Foo.c };
Run Code Online (Sandbox Code Playgroud)

其中Foo.ab和c是静态最终字符串.

我仍然可以做这样的事情fooArray[0] = "taco";,并最终{ taco, Foo.b, Foo.c }为fooArray的内容是什么?

如果是这样,是否会将数组设为私有,并使用getter来生成数组的副本以Arrays.copyOf解决此问题?

java arrays string final

0
推荐指数
1
解决办法
451
查看次数

无法访问内部类中的变量,但我需要更改变量,因此我也无法将其声明为final

View.OnClickListener handleOnClick(ToggleButton mButton, boolean mBoolean) {
    return new View.OnClickListener() {
        public void onClick(View v) {
            mBoolean = !mBoolean;
            updateUi(mButton, mBoolean);
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

mBoolean和mButton"是从内部类中访问的,需要声明为final"

但是当我这样做时,我不能做mBoolean =!mBoolean,因为它说我无法改变最终变量.

java final

0
推荐指数
1
解决办法
74
查看次数

为什么最终的收藏仍然会更新?

我有这个代码,我存储两个集合,然后添加一个事件监听器(这里没有lambda - 我需要坚持Java 7;)).

    // rri is a ReturnRequestInterface 
    final Collection<BigDecimal> selectedItems = rri.getSelected();
    final Collection<BigDecimal> unselectedItems = rri.getUnSelected();

    rri.addInformationChangeEventListener(new ComponentInformationChangeListener() {

        @Override
        public void informationChange(RequestChangeEvent event) {

            ReturnRequestInterface source = (ReturnRequestInterface) event.getSource();
            boolean debug1 = source.getSelected().containsAll(selectedItems);
            boolean debug2 = source.getUnSelected().containsAll(unselectedItems);

        }

    });
Run Code Online (Sandbox Code Playgroud)

我最初调试了这个,并正确设置了集合.它不包含任何对象,因为代码刚刚初始化.

调试监听器(由于选择了项目而触发了事件)让我感到困惑.布尔debug1debug2都是真的,因为收集selectedItemsunselectedItems根据项目选择更新.因此,事件源集合包含与声明的最终集合(selectedItems,unselectedItems)相同的项目.

这两个宣布的最终收藏品是否必须保持不变?

java collections final

0
推荐指数
1
解决办法
100
查看次数

错误:无法为最终变量赋值

我正面临Android Studio的以下问题

public class MainActivity extends AppCompatActivity {

  @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final int numeroHomem = 0;
    final int numeroMulher = 0;
    final int numeroPessoas = 0;

    final TextView campoTexto = (TextView) findViewById(R.id.pessoas);
    final Button botaoHomem = (Button) findViewById(R.id.homem);
    final Button botaoMulher = (Button) findViewById(R.id.mulher);
    final Button botaoReset = (Button) findViewById(R.id.reset);

     botaoHomem.setOnClickListener(new Button.OnClickListener(){
        public void onClick(View v){
            numeroHomem++;
            numeroPessoas++;
            String mensagem = Integer.toString(numeroPessoas);
            campoTexto.setText("Total: " + mensagem + " pessoas");
            botaoHomem.setText(Integer.toString(numeroHomem));
         }
     });
 } }
Run Code Online (Sandbox Code Playgroud)

错误:无法为最终变量numeroHomem …

java android final button

0
推荐指数
1
解决办法
9071
查看次数

是否可以只定义一次变量而不使用final

我想知道在Java中是否可以只分配一次变量。我知道这里有final关键字,但我想获得相同的结果而不必在构造函数中设置值。我想在构造函数之外设置它,因为我还不知道该值。

java variables final

0
推荐指数
1
解决办法
93
查看次数