Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8213511
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 7, 20262026-06-07T11:08:35+00:00 2026-06-07T11:08:35+00:00

I am porting some Java-code to Dart and it heavily uses these kinds of

  • 0

I am porting some Java-code to Dart and it heavily uses these kinds of maps:

Map<Class<? extends SomeClass>, SomeOtherClass> map = new HashMap<>();

At the moment this seems to be impossible in dart. I am aware that there is a proposal to introduce first level types: http://news.dartlang.org/2012/06/proposal-for-first-class-types-in-dart.html which would introduce

class Type {
    @native String toString();
    String descriptor(){...} // return the simple name of the type
}

So until this proposal gets implemented I have created following class:

class Type {
    final String classname;
    const Type(this.classname);
    String descriptor() => classname;
}

and the classes where I need it have a simple get-method

abstract Type get type();

That way I can use my Type just like I would use the real Type and to switch later I’d just have to delete my workaround.

My question: Is there some dart-way of doing this kind of mapping (which I am not seeing) or is the way I do it a reasonable workaround until the real Type class gets introduced?

Update for Dart 1.0

It can be done this way:

var map = new Map<Type, SomeOtherClass>();
// either
map[SomeOtherClass] = new SomeOtherClass();
// or
var instance = new SomeOtherClass();
map[instance.runtimeType] = instance;
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-07T11:08:37+00:00Added an answer on June 7, 2026 at 11:08 am

    Update: this construction is not currently doable in Dart

    Map<Class<? extends SomeClass>, SomeOtherClass>
    

    you will have to wait for .type/.class to arrive for an elegant solution to this (lots of us Dartisans are hoping that this will arrive sooner rather than later). However for the simpler case

    Map<? extends SomeClass, SomeOtherClass>
    

    You can just do

     Map<SomeClass, SomeOtherClass> aMap;
    

    as in Dart any class that extends SomeClass is also going to be a valid SomeClass. For example if you run the following code in checked mode:

    main() {
      Map<Test, String> aMap = new HashMap<Test, String>();
      var test = new Test("hello");
      var someTest = new SomeTest("world");
      var notATest = new NotATest(); 
    
      aMap[test] = test.msg;
      aMap[someTest] = someTest.msg;
      aMap[notATest] = "this fails";
    }
    
    class Test implements Hashable {
      Test(this.msg);
    
      int hashCode() => msg.hashCode();
    
      final String msg;
    }
    
    class SomeTest extends Test {
      SomeTest(String message): super(message);
    }
    
    class NotATest implements Hashable {
      int hashCode() => 1;
    }
    

    then you you will get the error:

    type 'NotATest' is not a subtype of type 'Test' of 'key'.
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm looking at porting some code that uses java.util.concurrent.ConcurrentSkipListSet to an environment where this
I'm in the process of porting some Java processing code to ruby-processing , and
I am porting some C# code over to Java. I am having trouble with
I'm porting some WPF code to WinRT. The code uses System.Windows.Media.Animation.ParallelTimeline to syncrhonize two
I'm porting some code from other language to Ruby, in my Class I need
I'm porting some crufty C++ Windows-code to Linux, which uses functions called open and
I'm porting some geolocation java code from http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates#Java (shown below) to python. It can
I am porting some C code involving an artificial neural network to Java. I
I am porting some Java code to Python and we would like to use
I am porting over some Java code into Google's Go language and I converting

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.