Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Эта проблема может быть решена с помощью опции keymap
. Он позволяет определить альтернативное отображение клавиатуры для использования в режимах, требующих ввода текста.
Для переключения между стандартными и альтернативными таблицами клавиш в режиме вставки, замены или командной строки используйте Ctrl kbd> + ^ kbd> ( Ctrl kbd> + 6 KBD>). Изменение раскладки клавиатуры влияет только на ввод текста; Поведение клавиатуры в обычном режиме остается неизменным независимо от текущей настройки раскладки клавиатуры. Можно оставить запись в режиме вставки на греческом языке и сразу использовать сочетания клавиш в обычном режиме, не переключаясь на другую раскладку клавиатуры. Если после этого вы вернетесь в режим вставки или, например, начнете поиск, набрав /
, Vim автоматически переключит раскладку клавиатуры на греческий.
Текущая клавиатура, используемая в этих режимах ввода текста, запоминается между переключениями в другие режимы. Единственное исключение из этого поведения сделано для режима командной строки, который всегда начинается с таблицы ключей по умолчанию, так как большую часть времени требуется вводить команду Ex (в ASCII). С установленной опцией keymap
пользователь должен работать в Vim, сохраняя раскладку системной клавиатуры на английском, переключая раскладку клавиатуры Vim с помощью Ctrl kbd> + ^ kbd> (вместо system- широкоформатный переключатель).
Чтобы навсегда включить греческую раскладку UTF-8, добавьте следующую строку в файл .vimrc
.
:set keymap=greek_utf-8
Существует множество предопределенных таблиц клавиш для большого набора языков, вы можете просмотреть их все в самом Vim, используя :e $VIMRUNTIME/keymap
. Обратите внимание, что обычно для одного языка предусмотрено несколько таблиц ключей, которые отличаются только кодировкой символов, так что любой может выбрать ту, которая соответствует их конфигурации.
Я также рекомендую установить параметры ниже, чтобы указать, должна ли карта ключей включаться по умолчанию в режиме вставки и при вводе шаблона поиска.
:set iminsert=0
:set imsearch=-1
См. :help iminsert
и :help imsearch
для их подробных объяснений.
Существует также специальный языковой режим, который, если я не ошибаюсь, был введен в Vim раньше, чем keymap
. Это позволяет добиться поведения, аналогичного тому, которое предусмотрено в keymap
, путем ручного указания пар букв, которые соответствуют клавишам на клавиатуре в длинной строке, которая будет сохранена в опции langmap
. Лично - мой родной язык тоже не английский - я предпочитаю (и рекомендую) вместо этого использовать keymap
.
В заключение я должен подчеркнуть, что все вышеперечисленное в равной степени применимо к любому другому языку, для которого Vim имеет (или может быть настроен для него) раскладку клавиатуры.
См. Также мой ответ на аналогичный вопрос , который был задан позже. Это включает в себя немного более подробное объяснение.