Да, аргумент безопасности ...:)
это хорошее начало, но с простым числом, оно будет выдавать только ошибки времени выполнения, если вы передадите числа (плюс есть вероятность, что 1/2 ^ 64 вы угадаете правильное число ...: D) ... используйте это, если вы также хотите иметь ошибки времени компиляции (одна глупость в том, что вы просто не можете установить тип, который не может иметь значение NULL, поэтому null всегда будет допустимым аргументом):
package {
public class Test {
public function Test(enforcer:TestEnforcer) {
if (enforcer == null) throw "haha, good try ... but, no! :P";
}
public static function create():Test {
//do your cheks here
return new Test(TestEnforcer.enf);
}
}
}
class TestEnforcer {
public function TestEnforcer() { }
public static const enf:TestEnforcer = new TestEnforcer();
}
другой подход состоит в том, чтобы создать открытый интерфейс MyPrivateConstrClass
и закрытый / внутренний класс MyPrivateConstrClassImpl
и иметь другую функцию, которая будет создавать экземпляр MyPrivateConstrClassImpl
, но пусть возвращаемое значение этой функции будет иметь тип MyPrivateConstrClass
. .. это немного излишне, но 100% компиляция и безопасность во время выполнения ...
Greetz
back2dos