Kon*_*ong 11 groovy compile-static
以下两种铸造方法之间是否存在实际差异:
result.count = (int) response['hits']['total']
VS
result.count = response['hits']['total'] as int
我正在使用@CompileStatic并且编译器希望我进行演员表 - 这让我想知道这两个表示法之间是否存在任何性能或实际差异.
dsh*_*rew 10
主要区别在于使用继承的概念来进行转换,其中as运算符是可能使用或不使用继承概念的自定义转换器.
哪一个更快?
这取决于转换器方法的实现.
好吧,所有的转换真的意味着将一个特定类型的对象"转变为"另一个对象类型.此过程称为转换变量.
例如:
Object object = new Car();
Car car = (Car)object;
Run Code Online (Sandbox Code Playgroud)
正如我们在示例中看到的那样,我们将类的对象Object转换为a,Car因为我们知道该对象是内向的实例Car.
但我们不能这样做,除非实际上没有任何意义的Car子类Bicycle(ClassCastException在这种情况下你会得到):
Object object = new Car();
Bicycle bicycle = (Bicycle)object;
Run Code Online (Sandbox Code Playgroud)
as 操作者在Groovy中,我们可以覆盖方法asType()以将对象转换为另一种类型.我们可以在代码中使用方法asType()来调用转换,但我们甚至可以缩短它并将其用作.
在groovy中使用as运算符左手操作数必须实现此方法:
Object asType(Class clazz) {
//code here
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的方法接受的一个实例,Class并实现自定义转换所以基本上你可以转换Object到Car或Car到Bicycle如果你想这一切都取决于您的实现.