它是否将一个对象更改为另一个对象?如果Imonitor
是一个接口Imonitor[] x = new Imonitor();
是什么意思?这是否意味着我们可以创建接口的对象?类型转换实际上在java中意味着什么?
回答
它是否将一个对象更改为另一个对象?
(1)号对于引用类型
a = (typename)b;
告知编译器,你“知道”哪些“B”指向的对象也是类型“类型名称”的对象。也就是说,它是一个运算符而不是对象。 (对于原始类型,它实际上是一种转换)。
如果iMonitor的是一个接口什么呢iMonitor的[] X =新的iMonitor();手段?
(2)它不会编译。 Imonitor是一个类型名称。 Imonitor []是一系列IMonitors。
这是否意味着我们可以创建接口的对象?
(3)不可以,但你可以创建引用数组来iMonitor的,这是什么
new IMonitor[3]
会做。
考虑扩大不同的主题。 – 2011-08-05 06:23:48
如果Imonitor
是接口,则比new Imonitor();
不起作用。
Imonitor[] x
是Imonitor
-array而不是Imonitor
变量。
如果Imonitor是一个接口,则新的Imonitor()将不起作用 - 您将收到编译错误。
转换对象的方法是更改编译器认为该对象具有的类型(静态类型)并进行检查。当程序运行时,JavaVm会检查转换是否有效,如果不是,则抛出异常。
接口不能是对象,你必须有一个实现接口的类。
正如其他人所说(我在我的评论中),你不能直接实例化一个接口。我建议你阅读Java界面,以便更熟悉它们 - 它们可能首先会让人困惑,但它们是语言的关键部分。
Here is the section在Java教程的接口上。
那么,铸造会根据你正在谈论的类型做不同的事情。试想一下:
Object x = "hello";
String y = (String) x;
即不改变对象的类型 - 但它转换参考Object
类型来String
类型的参考,通过检查引用或者指String
(或者更一般地说,演员或演员的目标类型)或为空。
对于原始类型,它实际上并创建不同类型的新数据值,改变复制的信息而不是仅仅改变到的信息的基准:
double x = 10.5;
int y = (int) x; // The value of y is 10; x is unchanged though.
关于接口:
Imonitor[] x = new Imonitor();
这不会直接编译。但是,这会:
Imonitor[] x = new Imonitor[2];
这不是创造Imonitor
本身的任何实例 - 它只是创造一个阵列有两个“插槽”可容纳引用的贯彻Imonitor
类型的对象。这两个插槽中的初始值将为null
;你可能会像这样填充数组:
x[0] = new FirstImplementation();
x[1] = new SecondImplemnentation();
...创建具体实现类的实例。
类型转换也被称为type conversion,它将对象从一种数据类型更改为另一种。在非原始对象中,类型转换是在具有某些层次结构特征的对象上完成的。例如:甲Person
对象2子类称为Parent
和Child
(均为亚类具有相同的hierchical结构,因为它们继承Person
),因此,这是一个有效的类型转换:
Person person = new Parent();
Parent parent = (Parent) person;
对于示例,Imonitor[] x = new Imonitor();
不会作为编译您正在将Imonitor
的单个对象分配给预计的一个实例Imonitor
的数组。
但是,这将汇编:
Imonitor[] x = new Imonitor[2]; //Assigning 2 elements to array 'x'
假设你有一个接口:
public interface IMonitor {
public void monitor(Monitorable object) throws MonitorException;
}
那么这将不会是一个类型铸实施例,而是一个任务:
IMonitor x = new IMonitor() {
public void monitor(Monitorable object) throws MonitorException {
//Implementation done here...
}
};
(上面的例子演示了anonymous class)。
我希望这很清楚。
- 1. sret实际上意味着什么?
- 2. 内部锁实际上对Java类意味着什么?
- 3. Java方法 - RETURN实际上意味着什么?
- 4. “何时加载类”实际上意味着什么?
- 5. 什么是Page.LoadComplete意味着什么(实际上)
- 6. 什么“强类型”实际上意味着在ActionScript 3的Flash和Flex?
- 7. 什么类型在Haskell意味着
- 8. 什么onEndReachedThreshold实际上意味着在反应母语
- 9. 什么是“\”实际上是在PHP语法意味着
- 10. 这个java泛型意味着什么?
- 11. Java时区什么是转换意味着什么?
- 12. 邻接在实际应用中意味着什么?
- 13. “位图锁定”实际上意味着什么?
- 14. 不同的堆操作实际上意味着什么?
- 15. SmartGit冲突解决器实际上意味着什么?
- 16. 什么XPath表达式 '//祖先:: * [@ ID] [1]' 实际上意味着
- 17. 全双工连接实际上意味着什么?
- 18. 什么呢XML已经超过80次实际上意味着
- 19. Rails:它实际上意味着什么“呈现模板”
- 20. ChannelFuture的完成实际上意味着什么?
- 21. 卷积层的输出实际上意味着什么?
- 22. R nlminb虚假收敛实际上意味着什么?
- 23. 什么$,这实际上意味着>笨
- 24. oplog字段实际上意味着什么?
- 25. 生锈的生命周期实际上意味着什么?
- 26. 结肠在Java中意味着什么?
- 27. '...'在java中意味着什么?
- 28. “SomeClass.this”在java中意味着什么?
- 29. tmp_xxx在java中意味着什么?
- 30. @符号在java中意味着什么?
你不能直接实例化一个接口。 – Paul