Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Type type = Type.GetType("foo.bar.MyClass, foo.bar");
MSDN. Удостоверьтесь, что имя блок, Квалифицированный .
Создать экземпляр Вашего класса после того, как Вы получаете тип и вызываете метод -
Type type = Type.GetType("foo.bar.MyClass, foo.bar");
object instanceObject = System.Reflection.Activator.CreateInstance(type);
type.InvokeMember(method, BindingFlags.InvokeMethod, null, instanceObject, new object[0]);
Type type = Type.GetType("MyClass");
Удостоверяются, что включали пространство имен. Существуют перегрузки метода, которые управляют чувствительностью к регистру и выдается ли исключение, если имя типа не найдено.