Heim  >  Fragen und Antworten  >  Hauptteil

java - Warum sind die Mitgliedsvariablen in der Schnittstelle keine Konstanten?

switch (from) {
            case TAGs.casts://constant expression required
                break;
        }
        
//我的TAGs.casts是这样的
public interface TAGs {
    String casts = String.class.getSimpleName();
}

//如果写成这个样子就可以编译
public interface TAGs {
    String casts = "String";
}

Heisst es nicht, dass die Mitgliedsvariablen in der Schnittstelle alle Konstanten sind? Warum kann ich die Eingabeaufforderung nicht verwenden, um Konstanten für den Fall anzufordern?

phpcn_u1582phpcn_u15822675 Tage vor814

Antworte allen(4)Ich werde antworten

  • 滿天的星座

    滿天的星座2017-06-23 09:15:11

    使用接口要给常量赋初值,你自己写的没有给定初值,肯定是错的啊。

    Antwort
    0
  • 習慣沉默

    習慣沉默2017-06-23 09:15:11

    switch里的case需要在编译期就确定值,而String.class.getSimpleName();需要到运行的时候才能知道(尽管运行的时候确实是常量),所以编译不能通过

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-23 09:15:11

    的确是。一个是编译时要求的知道,一个是runtime(反射的方法都是runtime的)。之前答错了——以前看effective java的时候是static final修饰的的。同时里面还有一个建议,导出常量请使用枚举类。

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-06-23 09:15:11

    不是说接口中的成员变量都是常量吗请问这句话从哪里听来的?
    常量需要使用static final修饰,并且需要给定初始值

    Antwort
    0
  • StornierenAntwort