- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在检查一些专业编写的代码时发现了这个片段。 (我希望这个片段足以回答我的问题 - 如果没有让我知道)
...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
段仅在 elementToFormat
是 IStreamContentAccessor
的实例时运行。为什么程序会在 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/
我正在尝试创建一个简单的国际象棋程序,但在实现典当推广时遇到了一些小问题。我有一个抽象类 Piece 和扩展它的 6 个类(King、Queen、Rook、Knight、Bishop 和 Pawn)。
这个问题在这里已经有了答案: Convert data from long format to wide format with multiple measure columns (5 个回答) 3年
我正在使用具有 A* 寻路算法的库 (libtcod)。我的类继承了回调基类,我实现了需要的回调函数。这是我的通用示例: class MyClass : public ITCODPathCallbac
在配置重铸机器人时,有没有办法设置一个操作来重置除特定字段之外的所有内存? 我已经尝试取消设置除我需要的字段之外的所有字段,但它很无聊、不可扩展、不可扩展且不可维护。 谢谢 最佳答案 您应该在 Rec
我希望我的 recast.bot 回复用户的回复。这是代码,但我收到以下错误消息。如何解决这个问题? Bot Server is running on port 5002 TypeError: Can
我是一名优秀的程序员,十分优秀!