Sur*_*gch 4 constructor static-methods dart
给出以下代码:
const jsonString = '{"myString":"Hello"}';
final jsonMap = jsonDecode(jsonString);
final myObject = MyClass.fromJson(jsonMap);
Run Code Online (Sandbox Code Playgroud)
使用此语法有多少种方法创建新对象:
MyClass.fromJson(jsonMap)
Run Code Online (Sandbox Code Playgroud)
最近,我一直在尝试了解命名构造函数、工厂构造函数和静态方法之间的区别,因此我将我的答案发布在下面,以便我将来可以作为参考。
使用以下语法创建对象的新实例:
MyClass.fromJson(jsonMap)
Run Code Online (Sandbox Code Playgroud)
与以下代码一起使用:
// import 'dart:convert';
const jsonString = '{"myString":"Hello"}';
final jsonMap = jsonDecode(jsonString);
final myObject = MyClass.fromJson(jsonMap);
Run Code Online (Sandbox Code Playgroud)
至少有以下几种方法可以做到这一点(并补充说明每种方法的特点):
class MyClass {
MyClass(this.myString);
final String myString;
MyClass.fromJson(Map<String, dynamic> json) : this(json['myString']);
}
Run Code Online (Sandbox Code Playgroud)
有两种生成构造函数:命名的和未命名的。是MyClass.fromJson()命名构造函数,而MyClass()是未命名构造函数。以下原则适用于生成构造函数:
final属性,即不在构造函数主体中。const,即使它们没有重定向。class MyClass {
MyClass(this.myString);
final String myString;
factory MyClass.fromJson(Map<String, dynamic> json) {
return MyClass(json['myString']);
}
}
Run Code Online (Sandbox Code Playgroud)
const,但仅限于重定向时。class MyClass {
MyClass(this.myString);
final String myString;
static MyClass fromJson(Map<String, dynamic> json) {
return MyClass(json['myString']);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2025 次 |
| 最近记录: |