注释或一些自动代码生成来设置默认值以避免 Android/Java 中的 NullPointerExceptions?
annotation or some automated code generation for setting default values to avoid NullPointerExceptions in Android/Java?
我想知道 Android 中是否有任何设计模式、第三方库或任何处理 null 的注释处理器?
例如,假设您使用 Gson
解析 JSON Response
,并使用 Gson 将响应字符串直接映射到 Object named "Person"
。
Now assume Person has 3 fields
1) Name
2) Age
3) Gender
并且您即将在 UI 上显示它们,我的问题是如何避免 NULL pointer Exception without checking for Nulls for each field when displaying this data.
是否有注释处理器或任何库允许您提供空替换值?像这样
@defVal("N/A")
private String name;
@defVal(0)
private int age;
@defVal("N/A")
private String gender;
因此我们可以避免所有这些字段的空检查语句,并且在调用那里的 getter 时它会提供值(如果存在),如果存在空值则提供默认值。有什么建议吗?
编辑: 我知道处理空指针崩溃的两种方法
1) to use try catch
2) to use Getters and inside every getter i should check the null value and sets a default value if there is null
但我的问题是有没有办法减少这些代码行并使用一些自动生成的东西?我相信某种注释
如果您收到 NULL,则没有存储默认值的库,要减少每一步的空值检查,您应该使用 setter 和 getter 方法中的 getter 方法检查您的值如果它为 null 而不是 return 默认值,那么在每一步你都不需要检查 NULL 值。
没有图书馆,但你可以这样做:
public getValue(){
return(value!=null?value:defaultValue);
}
此功能仍在开发中,但您可能想试用数据绑定支持库:
http://developer.android.com/tools/data-binding/guide.html
绑定系统对 NullPointerException 有一些保护。此外,它支持显式默认设置:
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName, default=PLACEHOLDER}"/>
我想知道 Android 中是否有任何设计模式、第三方库或任何处理 null 的注释处理器?
例如,假设您使用 Gson
解析 JSON Response
,并使用 Gson 将响应字符串直接映射到 Object named "Person"
。
Now assume Person has 3 fields
1) Name
2) Age
3) Gender
并且您即将在 UI 上显示它们,我的问题是如何避免 NULL pointer Exception without checking for Nulls for each field when displaying this data.
是否有注释处理器或任何库允许您提供空替换值?像这样
@defVal("N/A")
private String name;
@defVal(0)
private int age;
@defVal("N/A")
private String gender;
因此我们可以避免所有这些字段的空检查语句,并且在调用那里的 getter 时它会提供值(如果存在),如果存在空值则提供默认值。有什么建议吗?
编辑: 我知道处理空指针崩溃的两种方法
1) to use try catch
2) to use Getters and inside every getter i should check the null value and sets a default value if there is null
但我的问题是有没有办法减少这些代码行并使用一些自动生成的东西?我相信某种注释
如果您收到 NULL,则没有存储默认值的库,要减少每一步的空值检查,您应该使用 setter 和 getter 方法中的 getter 方法检查您的值如果它为 null 而不是 return 默认值,那么在每一步你都不需要检查 NULL 值。
没有图书馆,但你可以这样做:
public getValue(){
return(value!=null?value:defaultValue);
}
此功能仍在开发中,但您可能想试用数据绑定支持库:
http://developer.android.com/tools/data-binding/guide.html
绑定系统对 NullPointerException 有一些保护。此外,它支持显式默认设置:
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName, default=PLACEHOLDER}"/>