【Dart】Dart로 자작 어노테이션의 작성은 가능한가?
→ 결론 : 가능
이번에는 「포켓몬」의 재료를 베이스로 Dart 언어로 자작 어노테이션을 작성해 보았다.
작성하는 어노테이션은 다음과 같이 도감 번호 등이 정의되어 있는 어노테이션.
■ 포켓몬 어노테이션(PokemonAnnotation)
샘플 코드
포켓몬 「정치」 「란턴」의 도감 번호, 이름, 종족치를 콘솔상에 출력하는 샘플.
자신의 클래스를 리플렉션하는 것으로, 계승 클래스의 대응도 가능.
Main.dartimport 'dart:mirrors';
import 'PokemonAnnotation.dart';
void main() {
Chinchou().printPokemonData();
Lanturn().printPokemonData();
}
@PokemonAnnotation(170, "チョンチー", [75, 38, 38, 56, 56, 67])
class Chinchou {
void printPokemonData() {
ClassMirror classMirror = reflectClass(this.runtimeType); // 自身のクラスをリフレクション
int dexNumber = classMirror.metadata.first.reflectee.pokemonDexNumber;
String name = classMirror.metadata.first.reflectee.pokemonName;
List<int> baseStats = classMirror.metadata.first.reflectee.pokemonBaseStats;
print(dexNumber);
print(name);
print(baseStats);
}
}
@PokemonAnnotation(171, "ランターン", [125, 58, 58, 76, 76, 67])
class Lanturn extends Chinchou {
// Chinchouクラス継承
}
PokemonAnnotation.dartlibrary PokemonAnnotation;
class PokemonAnnotation {
final int pokemonDexNumber;
final String pokemonName;
final List<int> pokemonBaseStats;
const PokemonAnnotation(
this.pokemonDexNumber, this.pokemonName, this.pokemonBaseStats);
}
실행 결과
포켓몬 '정치' '런턴' 도감번호, 이름, 종족값이 콘솔에 출력됐다.
170
チョンチー
[75, 38, 38, 56, 56, 67]
171
ランターン
[125, 58, 58, 76, 76, 67]
Exited
감상
Java 언어로 자작 어노테이션을 작성하는 것이 있었기 때문에, Dart 언어에서도 마찬가지로 작성할 수 있는 것은 고맙다.
「Dart 언어로 자작 어노테이션 작성할 수 없는가?」라고 하는 의문으로부터 조사해 보았지만, 참고가 되는 자료가 생각했던 것보다 발견되지 않았기 때문에, 메모용으로서 본 기사를 남겨 둔다. (조사 방법이 나쁜 것일지도 모르지만 ...)
Reference
이 문제에 관하여(【Dart】Dart로 자작 어노테이션의 작성은 가능한가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sizzer_pbt/items/b85311e340536c6b2248
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import 'dart:mirrors';
import 'PokemonAnnotation.dart';
void main() {
Chinchou().printPokemonData();
Lanturn().printPokemonData();
}
@PokemonAnnotation(170, "チョンチー", [75, 38, 38, 56, 56, 67])
class Chinchou {
void printPokemonData() {
ClassMirror classMirror = reflectClass(this.runtimeType); // 自身のクラスをリフレクション
int dexNumber = classMirror.metadata.first.reflectee.pokemonDexNumber;
String name = classMirror.metadata.first.reflectee.pokemonName;
List<int> baseStats = classMirror.metadata.first.reflectee.pokemonBaseStats;
print(dexNumber);
print(name);
print(baseStats);
}
}
@PokemonAnnotation(171, "ランターン", [125, 58, 58, 76, 76, 67])
class Lanturn extends Chinchou {
// Chinchouクラス継承
}
library PokemonAnnotation;
class PokemonAnnotation {
final int pokemonDexNumber;
final String pokemonName;
final List<int> pokemonBaseStats;
const PokemonAnnotation(
this.pokemonDexNumber, this.pokemonName, this.pokemonBaseStats);
}
포켓몬 '정치' '런턴' 도감번호, 이름, 종족값이 콘솔에 출력됐다.
170
チョンチー
[75, 38, 38, 56, 56, 67]
171
ランターン
[125, 58, 58, 76, 76, 67]
Exited
감상
Java 언어로 자작 어노테이션을 작성하는 것이 있었기 때문에, Dart 언어에서도 마찬가지로 작성할 수 있는 것은 고맙다.
「Dart 언어로 자작 어노테이션 작성할 수 없는가?」라고 하는 의문으로부터 조사해 보았지만, 참고가 되는 자료가 생각했던 것보다 발견되지 않았기 때문에, 메모용으로서 본 기사를 남겨 둔다. (조사 방법이 나쁜 것일지도 모르지만 ...)
Reference
이 문제에 관하여(【Dart】Dart로 자작 어노테이션의 작성은 가능한가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sizzer_pbt/items/b85311e340536c6b2248
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Dart】Dart로 자작 어노테이션의 작성은 가능한가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sizzer_pbt/items/b85311e340536c6b2248텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)