Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谁能告诉我dartlang是如何创建抽象映射类的?_Java_Dart - Fatal编程技术网

Java 谁能告诉我dartlang是如何创建抽象映射类的?

Java 谁能告诉我dartlang是如何创建抽象映射类的?,java,dart,Java,Dart,为什么dart的hashmap不像java的hashmap 这意味着java的hashmap是 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {} 公共类HashMap扩展AbstractMap实现Map、Cloneable、Serializable{} 但dart是 abstract class HashMap

为什么dart的hashmap不像java的hashmap

这意味着java的hashmap是

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {}
公共类HashMap扩展AbstractMap实现Map、Cloneable、Serializable{}
但dart是

abstract class HashMap<K, V> implements Map<K, V> {}
抽象类HashMap实现Map{}
为什么它是抽象的

!!!新问题

  • 我怎么知道哪个子类扩展了“抽象类HashMap”
  • 我的另一个问题是,由于抽象类HashMap实现了Map接口,所以它没有实现
    void clear()
    功能。我想知道Map接口的
    void clear()
    功能是在哪里实现的?我在抽象HashMap类中找不到它 工厂构造函数返回
    \u HashMap
    的实例

    import 'dart:collection';
    
    void main() {
      var hashMap = HashMap();
      print(hashMap.runtimeType);
    }
    
    结果:

    \u HashMap


    这意味着
    \u HashMap
    实现(或扩展)
    HashMap

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

    import 'dart:collection';
    
    void main() {
      var hashMap = HashMap();
      print(hashMap.runtimeType);
    }
    
    abstract class Foo {
      factory Foo() = Bar;
    }
    
    class Bar implements Foo {}
    
    void main() {
      print(Foo().runtimeType); // "Bar"
    }
    

    嗨,欢迎来到Stack Overflow。我不熟悉Dart,但我认为它是一种编译成JS的完全不同的编程语言。开发人员在他们的语言/库中以类似的方式(有时是相同的方式)实现一些编程概念也就不足为奇了。“!!!新问题!!!”将其作为新问题发布。感谢您的建议!我已经把它作为一个新问题发布在