2015-06-30 1 views
1

У нас есть библиотека, которую мы написали, и после введения Checker Framework NullnessChecker для проверки ее кода она не может скомпилироваться (как и ожидалось). Я исправил все очевидные ошибки, но это один я не могу узнать, как исправить ...Как обходить шаблон фреймворка type.invalid error?

Вот подпись функции, вызвавшей в:

private static @Nullable char[] getChars(char ch) 

И сайт вызова, где происходит ошибка:

@Nullable char[] replacement = getChars(string.charAt(index)); 

Может ли кто-нибудь сказать мне, как получить шашку, чтобы принять это? Мне кажется правильным код.

EDIT

Ошибка:

[type.invalid] [@Initialized, @Nullable] may not be applied to the type "@Initialized @Nullable char" 

ответ

2

Сообщение об ошибке

[@Initialized, @Nullable] may not be applied to the type "@Initialized @Nullable char" 

был бы понятнее, если бы только было

@Nullable may not be applied to the type "char" 

Проблема заключается в том, что char является примитивным типом. Не имеет смысла говорить о @Nullable char или @NonNull char. Nullness применим только к объектным (не примитивным) типам. То же самое относится к инициализации.

Если вы хотите задать обнуляемый массив char - то есть, переменная replacement либо нуль или массив char - то написать так:

char @Nullable [] replacement = ...; 

Если вы пишете

@Nullable char [] replacement = ...; 

then that is a array of @Nullable char.

Это стандартная часть синтаксиса аннотации типа Java и не относится к Checker Framework. Тем не менее, есть FAQ об этом в Checker Framework manual.

+0

Отличное объяснение, спасибо. – Renato

 Смежные вопросы

  • Нет связанных вопросов^_^