java基础思考,下面是基本数据类型报空指针异常的情形及原因,这个空指针异常抛出代码我没找到,可能是在太底层了,没有相关异常信息,就一个异常…巨坑.
还有注意构造方法抛异常的异常信息格式: at com. ... .类名.<init>.....
,要知道这是在构造方法中抛出的异常.
public static class selfClass {
int a;
public selfClass(Integer a) {
this.a = a;
}
}
public static void main(String[] args) {
// Exception in thread "main" java.lang.NumberFormatException: null
int a = Integer.parseInt(null);
//Exception in thread "main" java.lang.NullPointerException
int b = (Integer) null;
// Exception in thread "main" java.lang.NullPointerException
// at com. ... .类名.<init>
new selfClass(null);
}
今天写springcloud的小demo,feign版本是2.2的,这个版本在定义IClientConfig类的时候,我自己是用的默认无参构造方法…这个方法…啧,只是产生bean,但properties集合为空,即没有任何属性配置,这是该方法的注解.
/**
* Create instance with no properties in the specified name space
*/
public DefaultClientConfigImpl(String nameSpace) {
this();
this.propertyNameSpace = nameSpace;
}
该bean用于向FeignLoadBalancer负载均衡器中填充相关属性,填充的时候就会产生问题,会遇到空指针,解决方法是实例化bean:IClientConfig时,不要new,不要new,不要new!
,它封装的有静态构造工具类,用这种方式构建才会有属性集合:
public static DefaultClientConfigImpl getClientConfigWithDefaultValues(String clientName) {
return getClientConfigWithDefaultValues(clientName, DEFAULT_PROPERTY_NAME_SPACE);
}
public static DefaultClientConfigImpl getClientConfigWithDefaultValues() {
return getClientConfigWithDefaultValues("default", DEFAULT_PROPERTY_NAME_SPACE);
}
我是在报错Consider defining a bean of type ‘com.netflix.client.config.IClientConfig’ 之后,自己手动实例化了IClientConfig类,潜意识用无参构造方法实例化,就遇到了这个问题.