gpt4 book ai didi

java - 为什么此转换不生成编译器警告?

转载 作者:搜寻专家 更新时间:2023-11-01 01:23:11 24 4
gpt4 key购买 nike

为什么以下 java 代码不生成编译器警告,如“从 SuperClass 到 SomeBaseClass 的不安全转换”?

public abstract SuperClass
{
static SuperClass create()
{
return new AnotherBaseClass();
}

private static class SomeBaseClass extends SuperClass
{
void print()
{
System.out.println("Hello World");
}
}

private static class AnotherBaseClass extends SuperClass
{
}

public static void main(String[] args)
{
SomeBaseClass actuallyAnotherClass = (SomeBaseClass)SuperClass.create();
actuallyAnotherClass.print();
}
}

我在 Windows 机器上使用 jdk1.6.0_25/bin/javac。 Eclipse Helios 也不会对此发出警告。

相反,它会导致运行时异常:

Exception in thread "main" java.lang.ClassCastException: SuperClass$AnotherBaseClass cannot be cast to SuperClass$SomeBaseClass

最佳答案

Javac 仅在使用泛型时警告不安全的转换。这里编译器相信你知道你在做什么:)

关于java - 为什么此转换不生成编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9024762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com