Если вы компилируете ваш код с ключом --enable-experimental-non-null, то компилятор Vala будет строго проверять каждый тип на не null, если только явно не объявлено обратное с помощью вопросительного знака:
Object o1 =newObject();// не может быть nullObject? o2 =newObject();// может быть null
Компилятор будет следить за тем, чтобы ссылки, которые могут содержать null не были присвоены ссылкам, которые не могут быть null, т.е. такого рода присвоения будут невозможны:
o1 = o2;
o2 может быть null, а о1 объявлен нe null, поэтому такое присвоение запрещено. Тем не менее, вы можете переопределить такое поведение с помощью приведения ссылки к не null, если есть уверенность, что о2 не null:
o1 =(!) o2;
Строгая проверка в не null режиме помогает избежать использования нежелательного использования null ссылок. Эта возможность покажет свой потенциал полностью, если все типы в биндингах будут отмечены на предмет содержания null ccылок правильным образом, что пока еще встречается редко.