为什么dart的hashmap不像java的hashmap?
意思是java的hashmap是
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {}
但是飞镖是
abstract class HashMap<K, V> implements Map<K, V> {}
为什么是abstract
?
!!!新问题!!!
void clear()
函数。我想知道Map接口的void clear()
功能在哪里实现?我在抽象的HashMap类中找不到它。在Dart你可以在factory
类上有一个具体的abstract
构造函数,然后转发到另一个类。虽然构造函数是针对抽象类调用的,但是您获得的实例是具体的子类型。
abstract class Foo {
factory Foo() = Bar;
}
class Bar implements Foo {}
void main() {
print(Foo().runtimeType); // "Bar"
}
external factory HashMap(
{bool equals(K key1, K key2),
int hashCode(K key),
bool isValidKey(potentialKey)});
工厂构造函数返回_HashMap
的实例。
import 'dart:collection';
void main() {
var hashMap = HashMap();
print(hashMap.runtimeType);
}
结果:
_HashMap<dynamic, dynamic>
这意味着_HashMap
实施(或扩展)HashMap
。