有人能告诉我Dartlang实例如何抽象Map类? [关闭]

问题描述 投票:0回答:2

为什么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

!!!新问题!!!

  1. 我怎么知道哪个子类扩展了“抽象类HashMap”?
  2. 我的另一个问题是,由于抽象类HashMap实现了Map接口,因此它没有实现void clear()函数。我想知道Map接口的void clear()功能在哪里实现?我在抽象的HashMap类中找不到它。
java dart
2个回答
1
投票

在Dart你可以在factory类上有一个具体的abstract构造函数,然后转发到另一个类。虽然构造函数是针对抽象类调用的,但是您获得的实例是具体的子类型。

abstract class Foo {
  factory Foo() = Bar;
}

class Bar implements Foo {}

void main() {
  print(Foo().runtimeType); // "Bar"
}

0
投票
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

© www.soinside.com 2019 - 2024. All rights reserved.