gpt4 book ai didi

java - 如果变量已经是该类型,为什么还要将其重铸为该类型?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:57:14 25 4
gpt4 key购买 nike

我在检查一些专业编写的代码时发现了这个片段。 (我希望这个片段足以回答我的问题 - 如果没有让我知道)

...yada yada yada ....

private ITypedElement format(final ITypedElement elementToFormat) {
try {
if (elementToFormat instanceof IStreamContentAccessor) {
final IStreamContentAccessor resNode = (IStreamContentAccessor) elementToFormat;
final InputStream contentIs = resNode.getContents();
final String contentsString = fromInputStreamToString(contentIs);
final Map options = JavaCore.getOptions();
.... etc....

if 段仅在 elementToFormatIStreamContentAccessor 的实例时运行。为什么程序会在 if 语句之后进行第一条语句,“final IStreamContentAccessor resNode = (IStreamContentAccessor)elementToFormat;”

将某物强制转换为它必须已经是的类型有什么意义?

最佳答案

程序员可能知道它是一个IStreamContentAccessor,但如果没有转换,编译器就不知道它是一个IStreamContentAccessor,所以它不会让程序员访问特定于 IStreamContentAccessor 类的任何字段/方法。

class ClassA {
Object field1;
}

class ClassB extends ClassA
Object field2;
}

ClassA obj = new ClassB();
obj.field1; // This is fine, the compiler knows it's a ClassA
obj.field2; // This isn't allowed - as far as the compiler knows it's a ClassA, not a ClassB
((ClassB)obj).field2; // This is allowed - now the compiler knows it's a ClassB

关于java - 如果变量已经是该类型,为什么还要将其重铸为该类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16449566/

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