EnumPattern mixin
1つの固定値のみを持つ pattern.
value という名前の compile time constant(コンパイル時定数, 修飾子は const) を 1つ だけ持つ class.
static access 用に VALUE という名前の property を定義する.
instance access 用に value という名前の property を定義する. この value は static access 用の VALUE を参照する.
runtime validation が不要な class なので実行速度が速い.
値は変化しないので inactivate() は定義しない.
hashCode もしくは == operator を override すると その onstance は constant set として利用できない. なので hashCode および == operator は override しない. 実際に比較などするときは == operator を使わず is を利用するので問題ない. しかし instance を == で比較できない.
static property(static な property は override できないため ここで理論だけ提示)
FINAL_TYPE_STRING_SET
final class の type の文字列の set.
Type 型のままだと json に 変換できないため BPRiverOriginErrorD
が発生したときに log に type の set を保持するときに利用.
-> これは yaml_writter の仕様であり 解決策があるので大丈夫になった(20240613)
つまり FINAL_TYPE_STRING_SET は不要になった.
FINAL_TYPE_SET
error 時の log に渡すのは FINAL_TYPE_STRING_SET なので不要?
今のところ必須の用途が不明(20240605)
-> こちらを利用することになった(20240613)
VALUE_SET
その abstract class から派生する final class の value の set.
INSTANCE_SET
その abstract class から派生する final class の instance の set.
XXX
その abstract class から派生する 各 final class の instance を返す.
XXX には その abstract class の prefix または suffix を取り除いた host 部分を適用する.
ex:
Keyword を継承した ForKeyword という名前の final class があったとする.
Keyword.FOR_KEYWORD だと keyword の部分の意味が重複してしまう.
なので keyword という suffix を取り除き
Keyword.FOR と指定できるようにする.
- Implemented types
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
-
properties
→ Map<
String, Object> -
inactivate(), = operator, [] operator, など に依存されている.
no setteroverride - runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- value → String
-
no setter
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toJson(
) → String -
ここでの toJson とは json へ encode 可能な形式へ変換するという意味で使われる.
つまり json string を返すというわけではない.
また serialize としても利用するため deserialize 可能でなければならない.
override -
toString(
) → String -
A string representation of this object.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited