dart에서 제네릭 클래스 인스턴스화

얀 블라디미르 모스 터트

typedef를 사용하여 stackoverflow에 대한 예제를 살펴 보았지만 대부분 콜백에 사용되는 것처럼 보이므로 작업중인 작업과 관련이 있는지 확실하지 않습니다. RPC를 수행하는 제네릭을 사용하여 클래스를 구현하고 있습니다.

abstract class Message {

  int created = new DateTime.now().millisecondsSinceEpoch;
  Map map = new Map();

  Map toJson();
  void fromJson(String json){
    map = JSON.decode(json);
    this.created = map["created"];
  }

  String toString() {
    return JSON.encode(this);
  }

  Message(){
    map["created"] = created;
  }

}

___Request 및 ___Response는 모두 메시지를 확장합니다.

import 'Message.dart';

class TestResponse extends Message {

  String test;
  String message;

  Map toJson() {
    map["test"] = this.test;
    return map;
  }

  fromJson(String json) {
    super.fromJson(json);
    this.test = map["test"];
    this.message = map["message"];
  }

}

이제 메시지를 보내고받는 모든 상용구를 숨기는 일반 RPC 클래스를 수행하려고 할 때 다시 보낼 응답 클래스의 새 인스턴스를 만들어야합니다. (나는 RPC.submit을 선호했지만 정적 정적 멤버는 유형 매개 변수를 참조 할 수 없다는 오류가 발생하므로 여기에서 내 다른 옵션은 생성자 구문을 남용하는 것입니다 (예 : RPC.submit (json, uri) .getResponse). () ...)

import 'package:http/browser_client.dart';
import 'Message.dart';

class RPC<REQ extends Message, RES extends Message> {

  RES submit(REQ req, String uri){
    var client = new BrowserClient();
    var url = "http://localhost:9090/application-api" + uri;
    RES res = new RES(); // <----- can't do this
    client.post(url, body: req.toString()).then((response){
      print("Response status: ${response.statusCode}");
      print("Response body: ${response.body}");
      res.fromJson(response.body);

    });
    return res;  
  }

}

제출 방법에서 분명히 "RES res"의 인스턴스를 전달하고 사용할 수 있지만 너무 많은 추가 상용구없이 일반 RPC 내에서 수행 될 수 있기를 바랬습니다. 어떻게 든 dart에서 가능합니까?

Günter Zöchbauer

http://dartbug.com/10667 과 관련된 것 같습니다.

비슷한 상황에서 내가 한 일은 폐쇄 된 생성자에 유형을 매핑하는 정적 맵을 만드는 것이 었습니다. 메시지 유형과 해당 유형의 새 인스턴스를 만드는 각각에 대한 클로저로 맵을 초기화합니다. 그런 다음 유형 인수를 사용하여 클로저를 찾고 반환 된 클로저를 호출하여 새 인스턴스를 얻습니다.

var factories = {
  'A': () => new A(),
  'B': () => new B(),
  'C': () => new C(),
};

...

var a = factories['A']();

공장을 수업에 통합 할 수 있습니다.

class A {
  static A createNew() => new A();
}

var factories = {
  'A': A.createNew,
  'B': B.createNew,
  'C': C.createNew,
};
...
var a = factories['A']();

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

제네릭 클래스에서 Java 제네릭 클래스 인스턴스화

분류에서Dev

C #에서 제네릭 클래스 인스턴스화

분류에서Dev

구체적인 클래스를 스칼라의 제네릭 메서드 인스턴스화

분류에서Dev

변수에서 제네릭 유형 인스턴스화

분류에서Dev

Scala에서 Java 제네릭 내부 클래스를 인스턴스화하는 방법은 무엇입니까?

분류에서Dev

제네릭 클래스의 제네릭 메서드에 동적 유형의 인스턴스 전달

분류에서Dev

비 제네릭 클래스의 제네릭 클래스 메서드

분류에서Dev

C ++ : 제네릭 클래스의 비 제네릭 메서드?

분류에서Dev

C ++ : 제네릭 클래스의 비 제네릭 메서드?

분류에서Dev

비 제네릭 클래스의 제네릭 메서드

분류에서Dev

제네릭 유형 인스턴스화

분류에서Dev

C # 제네릭, 여기서 T 클래스 : (상속 클래스)

분류에서Dev

제네릭 클래스에서 캐스트 강제

분류에서Dev

C #에서 추상 제약 조건을 사용하여 제네릭 클래스를 인스턴스화하는 방법

분류에서Dev

typeof (T) 및 this.GetType (). GetGenericArguments () [0]은 제네릭 클래스 인스턴스 내에서 항상 동일합니까?

분류에서Dev

typescript에서 제네릭이있는 클래스 인스턴스를 어떻게 감지 할 수 있습니까?

분류에서Dev

클래스 서명에서 스칼라 제네릭 이해

분류에서Dev

제네릭 유형 인스턴스를 가져 오지 않는 제네릭 메서드 내에서 구체적인 클래스 속성 읽기

분류에서Dev

제네릭 메서드에 제네릭 클래스 객체 보내기 (Java)

분류에서Dev

제네릭에서 파생 된 클래스 컬렉션에서 제네릭 기본 클래스 사용

분류에서Dev

리플렉션을 통해 제네릭 클래스 인스턴스화

분류에서Dev

제네릭 클래스를 인스턴스화 할 때 NoSuchMethodException 발생

분류에서Dev

제네릭 클래스 및 서브 클래 싱 배열

분류에서Dev

작성 프로젝트에서 클래스 인스턴스화 문제

분류에서Dev

제네릭 자체가 제네릭 인 제네릭 클래스

분류에서Dev

제네릭 클래스 유형 제약이있는 제네릭 메서드

분류에서Dev

초기화 순서로 인해 클래스 인스턴스 문제 발생

분류에서Dev

클래스의 다른 제네릭 유형의 인스턴스를 반환하는 단일 메서드

분류에서Dev

제네릭 유형의 제네릭 클래스에서 유형 인수에 액세스

Related 관련 기사

  1. 1

    제네릭 클래스에서 Java 제네릭 클래스 인스턴스화

  2. 2

    C #에서 제네릭 클래스 인스턴스화

  3. 3

    구체적인 클래스를 스칼라의 제네릭 메서드 인스턴스화

  4. 4

    변수에서 제네릭 유형 인스턴스화

  5. 5

    Scala에서 Java 제네릭 내부 클래스를 인스턴스화하는 방법은 무엇입니까?

  6. 6

    제네릭 클래스의 제네릭 메서드에 동적 유형의 인스턴스 전달

  7. 7

    비 제네릭 클래스의 제네릭 클래스 메서드

  8. 8

    C ++ : 제네릭 클래스의 비 제네릭 메서드?

  9. 9

    C ++ : 제네릭 클래스의 비 제네릭 메서드?

  10. 10

    비 제네릭 클래스의 제네릭 메서드

  11. 11

    제네릭 유형 인스턴스화

  12. 12

    C # 제네릭, 여기서 T 클래스 : (상속 클래스)

  13. 13

    제네릭 클래스에서 캐스트 강제

  14. 14

    C #에서 추상 제약 조건을 사용하여 제네릭 클래스를 인스턴스화하는 방법

  15. 15

    typeof (T) 및 this.GetType (). GetGenericArguments () [0]은 제네릭 클래스 인스턴스 내에서 항상 동일합니까?

  16. 16

    typescript에서 제네릭이있는 클래스 인스턴스를 어떻게 감지 할 수 있습니까?

  17. 17

    클래스 서명에서 스칼라 제네릭 이해

  18. 18

    제네릭 유형 인스턴스를 가져 오지 않는 제네릭 메서드 내에서 구체적인 클래스 속성 읽기

  19. 19

    제네릭 메서드에 제네릭 클래스 객체 보내기 (Java)

  20. 20

    제네릭에서 파생 된 클래스 컬렉션에서 제네릭 기본 클래스 사용

  21. 21

    리플렉션을 통해 제네릭 클래스 인스턴스화

  22. 22

    제네릭 클래스를 인스턴스화 할 때 NoSuchMethodException 발생

  23. 23

    제네릭 클래스 및 서브 클래 싱 배열

  24. 24

    작성 프로젝트에서 클래스 인스턴스화 문제

  25. 25

    제네릭 자체가 제네릭 인 제네릭 클래스

  26. 26

    제네릭 클래스 유형 제약이있는 제네릭 메서드

  27. 27

    초기화 순서로 인해 클래스 인스턴스 문제 발생

  28. 28

    클래스의 다른 제네릭 유형의 인스턴스를 반환하는 단일 메서드

  29. 29

    제네릭 유형의 제네릭 클래스에서 유형 인수에 액세스

뜨겁다태그

보관