dart类型转换 is as
更新时间:2023-05-25 21:55
参考java的向上转型和向下转型:https://www.wodecun.com/blog/8131.html
is 、as 属于Type test operators。
is 判断是否是某个类型,返回true或者false。
如果a 是b的实现类,那么a is b 就返回true。
as 是类型转换,其相当于 :先检测 其是不是,然后再调用的一种简写。
但是还不是完全一致,当不是的时候,as 会抛出exception。
if (emp is Person) {
// Type check
emp.firstName = 'Bob';
}
可以简写为:
(emp as persion).firstName='Bob';
如果emp 不是persion,name就会抛出exception。
举例说明:
void main(List<String> arguments) {
//向上转型
Test test2 = Test2();
//判断test2是否Test2类的实现
print(test2 is Test2);
//向下转型 (as强制类型转换)
//方法1:
if(test2 is Test2)
{
test2.cs(); //在这个if体中idea可以提示 cs() 外部不提示
}
//方法2
// (test2 as Test2).cs();
//或者拆分:
Test2 test = test2 as Test2;
test.cs();
print(test.runtimeType); //输出:Test2
}
class Test {}
class Test2 extends Test {
cs() {
print('test2-cs');
}
}