if文でコンストラクタ内で、最終的な文字列を宣言するには?

プログラミング:

私は、コンストラクタ内の最後の文字列を宣言するために使用しました。今、私は必要に応じて異なり、それを宣言するために、if文を挿入します。

やったことある:

public Config(){
    final String path = "<path>";
    doSomething(path);
}

今、私がしようとしています

public Config(String mode){
    if (mode = "1") {
        final String path = "<path1>";
    } else {
        final String path = "<path2>";
    }
    doSomething(path);
}

残念ながらパスが今見つけることができません(シンボルエラーを見つけることができない)と私は本当に私の研究は、このことを理解して迷ってしまいました。以下の作品しかし、私は説明することはできません...私はここに何かについて深いミス概念を持っている必要があります。

public Config(String mode){
    final String path;
    if (mode = "1") {
        path = "<path1>";
    } else {
        path = "<path2>";
    }
    doSomething(path);
}

私はこれを取得することについて何を読んでください、ここで何が起こっているかを私に説明できます。

アンドリューTobilko:

あなたは、ここで起こっているものを私に説明できます

スニペット2:pathのスコープで宣言if文です。これは、そのアクセスの外ではありませんif

スニペット3:pathコンストラクタのスコープで宣言。それはそのコンストラクタ内でアクセスです。

私はこれを取得するについて何を読んでください。

もちろんJLSは、:https://docs.oracle.com/javase/specs/jls/se12/html/jls-6.html#jls-6.3それはかなり複雑だ、思慮深く、それを読んで、一緒に行く、右部分を見つけます

doSomething("1".equals(mode) ? "<path1>" : "<path2>");

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=177120&siteId=1