Groovy-as vs(强制转换)
以下两种铸造方法之间是否存在实际差异:Groovy-as vs(强制转换),groovy,compile-static,Groovy,Compile Static,以下两种铸造方法之间是否存在实际差异: result.count=(int)响应['hits']['total'] vs result.count=响应['hits']['total']为int 我使用的是@CompileStatic,编译器希望我执行强制转换-这让我想知道这两个符号之间是否有任何性能或实际差异。主要区别是强制转换使用继承的概念来进行转换,其中as运算符是一个自定义转换器,可能会或者可能不使用继承的概念 哪一个更快? 这取决于转换器方法的实现 铸造 好吧,所有的施法手段都是取一个
result.count=(int)响应['hits']['total']
vs
result.count=响应['hits']['total']为int
我使用的是
@CompileStatic
,编译器希望我执行强制转换-这让我想知道这两个符号之间是否有任何性能或实际差异。主要区别是强制转换使用继承的概念来进行转换,其中as
运算符是一个自定义转换器,可能会或者可能不使用继承的概念
哪一个更快?这取决于转换器方法的实现 铸造 好吧,所有的施法手段都是取一个特定的物体 类型并将其“转换为”另一个对象类型。这个过程叫做 铸造一个变量 例如: 正如我们在示例中看到的,我们正在将一个类为
object
的对象强制转换为Car
的对象,因为我们知道该对象在本质上是Car
的实例
但我们无法执行以下操作,除非Car
是Bicycle
的子类,实际上这没有任何意义(在这种情况下,您将得到ClassCastException
):
作为操作员
在Groovy中,我们可以重写方法asType()来转换对象
换成另一种类型。我们可以在代码中使用asType()方法
调用转换,但我们甚至可以将其缩短并用作
在groovy中,要将用作运算符,左手操作数必须实现以下方法:
Object asType(Class clazz) {
//code here
}
如您所见,该方法接受类的一个实例
并实现了一个自定义转换器,因此基本上您可以将对象
转换为汽车
或汽车
转换为自行车
,如果您需要,这一切都取决于您的实现
Object object = new Car();
Bicycle bicycle = (Bicycle)object;
Object asType(Class clazz) {
//code here
}