有人可以告诉我dartlang实例如何抽象Map类吗?

时间:2019-04-11 15:41:12

标签: java dart

为什么dart的哈希图不像Java的哈希图?

意味着Java的哈希图是

public function __invoke($logger)
{
    foreach ($logger->getHandlers() as $handler) {
        $handler->pushProcessor(function ($record) {
            $record['extra']['id'] = $GLOBALS['log_id'];
            $record['extra']['app'] = config('app.name');
            return $record;
        });
        $format = "[%datetime%] [%extra.id%] [%extra.app%] [%level_name%] [%message%] [%context%]\n";
        $ll =  new LineFormatter($format, null, true, true);
        $handler->setFormatter($ll);
    }
}

但是飞镖是

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {}

为什么是abstract class HashMap<K, V> implements Map<K, V> {}

!!!新问题!!!

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

2 个答案:

答案 0 :(得分:1)

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

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

class Bar implements Foo {}

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

答案 1 :(得分:0)

{
    "url": "http://localhost:8000/foods/1/",
    "food_name": "Pizza",
    "country_of_origin": "Italy"
}

工厂构造函数返回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