#flutter #dart
#flutter #dart
Вопрос:
Я переношу JSON5 на dart и хочу сохранить исходное соглашение.
Исходный код static class JSON5
содержит 2 статических метода. Но dart не допускает статических классов.
Мой код dart:
/// static class, do not instanciate or inherit this
class JSON5 {
static String stringify(dynamic obj) { };
static dynamic parse(String json5String) { };
}
Возможно ли остановить пользователей от 2 вещей?
- создание экземпляра класса:
var json5 = JSON5()
- расширяет или реализует класс:
class DerivedJSON5 extends JSON5 {}
Ответ №1:
Чтобы запретить создание экземпляра, вы можете добавить частный конструктор: JSON5._();
И для предотвращения наследования лучшее, что вы можете в настоящее время сделать в dart, — это добавить @sealed
аннотацию из мета-пакета
Комментарии:
1. 1, JSON5._() скрывает конструктор по умолчанию 👍. Но @sealed все еще не работает, я безуспешно пытался запустить
dartnalyzer lib
. возможно, для этого нужен файл конфигурации. Спасибо.2. Не уверен, почему это не работает, но я бы не стал слишком беспокоиться о возможности наследования от него, поскольку статические члены не могут быть унаследованы, поэтому он в основном ничего не делает