小编lea*_*eat的帖子

int.class autobox是否为Class <Integer>

我相信我的问题没有意义,但这是因为我不知道我在看什么或如何描述它...

下面的代码编译得很好,但它不应该因为int不是同一类型Integer.这不应该给编译器错误吗?如果编译器期望Class<Integer>在运行时的类型如何解决Class<int>?这是编译器让它继续使用原语的一些魔力吗?如果编译器放松对原语的验证,则不会导致方法编写者期望类型为EXACT类型Class<Integer>而是传递的错误Class<int>.

简而言之,为什么这会在运行时编译并生成(correctwrong取决于透视图)结果.

public static void main(String[] args) {

    printClass("int     ", int.class);
    printClass("Integer ", Integer.class);
    System.out.printf("AreEqual", int.class == Integer.class);
}

private static void printClass(String text, final Class<Integer> klazz) {
    System.out.printf("%s: %s%s", text, klazz, "\n");
}
Run Code Online (Sandbox Code Playgroud)

输出:

int     : int
Integer : class java.lang.Integer
AreEqual: false
Run Code Online (Sandbox Code Playgroud)

对于控制组,此代码NOT COMPILE按照我的预期进行

public static void main(String[] args) {

    printClass("Person  ", Person.class);
    printClass("Employee", Employee.class);
    System.out.printf("AreEqual: %s", Person.class == …
Run Code Online (Sandbox Code Playgroud)

java primitive boxing

13
推荐指数
1
解决办法
890
查看次数

是否可以在返回Type上添加注释

我遇到了这段代码

@Override
public @NotNull Class<?> getProviderClass() {
    return this.getClass();
}
Run Code Online (Sandbox Code Playgroud)

我想知道它是否如下面的代码:

@Override
@NotNull
public Class<?> getProviderClass() {
    return this.getClass();
}
Run Code Online (Sandbox Code Playgroud)

注意:@NotNull注释位于相对于accessModifier的不同位置

在这种情况下还是在方法上返回类型的注释?

java annotations

5
推荐指数
2
解决办法
3934
查看次数

标签 统计

java ×2

annotations ×1

boxing ×1

primitive ×1