在java中有两个相同的关键字?

Gur*_*lki 6 java

因为我们使用"default"关键字作为访问说明符,并且它可以在switch语句中使用以及完全不同的目的,所以我很好奇java中有任何其他关键字可以用于多个目的

Boz*_*zho 13

访问修饰符的"默认"不是关键字 - 您不写:
default void doSomething()

但是,在指定注释属性的默认值时 - 它是.

switch (a) {
   default: something();
}
Run Code Online (Sandbox Code Playgroud)

public @interface MyAnnotation {
    boolean bool() default true;
}
Run Code Online (Sandbox Code Playgroud)

这与finalJon Skeet指出的一起似乎涵盖了一切.也许除了"重载" for关键字:

for (initializer; condition; step)for (Type element : collection)


Jon*_*eet 7

你不能default用作访问说明符,所以我不认为即便如此.(编辑:正如Bozho指出的那样,它可以用于注释.)

final 表示"不能从/被覆盖"和"只读",它们是两种不同但相关的含义.


Wou*_*rts 4

  • default既可以在开关中使用,也可以作为注释中的默认值(正如 Bozho 所指出的)
  • final意味着“不能派生/覆盖”和“只读”,这是两个不同但相关的含义(正如乔恩所指出的)
  • extends既可以用来指定类的超类型,也可以在通配符和类型变量中使用来放置约束(相关但不完全相同)( List<? extends Foo>)
  • super可用于指定当前类的超类中的某些内容,或在通配符中放置约束 ( List<? super Foo>)
  • static意味着“类的一部分,而不是实例”(对于方法、属性或初始值设定项)以及作为static import
  • class声明一个类 ( class Foo {}),或引用一个类文字 ( Foo.class) (由 ILMTitan 回答)
  • for可以在普通的 for 循环和“增强”的 for 中使用,但这更像是重载(正如 Bozho 所说的那样),而不是真正具有两种含义)