- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章JavaBean字段如何防止非空赋值由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
工具类制作起因,有时候项目中出一点点错误,在所难免,经常,有些地方的字段是String,但是到了其他地方是Long,Date,Interger,BigDecimal,这个时候每次都需要判断下是否为空,否则就会在New BigDecimal(string)等中转化失败,报空指针。 如果字段很多,简直太恶心了.
这里日期是最恶心心,日期分为Date类型和String类型 转化为Date 。
举例 。
1
2
3
|
if
(string!=
null
){
date.setBigValue(
new
BigDecimal(string));
}
|
1.1、初始JavaBean User 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public
class
User {
/**
* 如果属性类型为基本数据类型,则会有默认值
* 影响正确判断,请特别注意
*/
// private int age;
private
Integer age;
private
String name;
private
String gender;
private
BigDecimal bigDecimal;
private
Date date ;
private
Long longvalue;
private
String dateStr ;
//注意这里是String类型的日期 例如 2018-12-09 00:00:00
get set……
|
1.2、被赋值的JavaBean 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* 作者 :HealerJean
* 日期 :2018/12/13 上午11:03.
* 类描述:
*/
public
class
UserNow {
private
String nameNow;
private
String genderNow;
private
Integer ageNow;
private
BigDecimal bigDecimalNow ;
private
Date dateNow ;
private
Long longvalueNow;
private
Date dateStrNow ;
//注意这里是Date类型
get set……
|
需要注意的是,下面的日期,在我们通过反射获取到值的时候,它打印出来的是英文日期串,我们需要对他进行一个转化 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
package
com.hlj.IgnoreNullBean;
import
org.junit.platform.commons.util.StringUtils;
import
java.lang.reflect.Field;
import
java.math.BigDecimal;
import
java.text.SimpleDateFormat;
import
java.util.Date;
import
java.util.Locale;
/**
* 作者 :HealerJean
* 日期 :2018/12/13 上午10:55.
* 类描述 防止非空字段,在类似于 new BigDecimal(string))中进行报错
*/
public
class
JavaBeanUtil {
/**
*
* @param object 原始数据JavaBean
* @param originFieldName 原始数据 字段名字 比如:name
* @param newObject 新复制的JavaBean
* @param newFilldName 新赋值的字段名字 比如 nameNow
* @param dateFormat 如果是date类型的日期,
* 1、传入的是String字符串'2018-12-09' 则需要传入相应Fromat格式 yyyy-MM-dd HH:mm:ss
* 2、如果是标准高的date类型,那么.toString之后是 -> Fri Dec 14 19:00:07 CST 2018, 则设置为null
*/
public
static
void
setFieldValue(Object object,String originFieldName,Object newObject,String newFilldName,String ...dateFormat) {
try
{
Field field = object.getClass().getDeclaredField(originFieldName);
field.setAccessible(
true
);
Field newfield = newObject.getClass().getDeclaredField(newFilldName);
newfield.setAccessible(
true
);
String newfieldType=newfield.getGenericType().toString();
if
(field.get(object) !=
null
&& StringUtils.isNotBlank(field.get(object).toString())) {
String value = field.get(object).toString();
System.out.println(value);
switch
(newfieldType){
case
"class java.lang.Integer"
:
newfield.set(newObject, Integer.valueOf(value));
break
;
case
"class java.lang.Long"
:
newfield.set(newObject, Long.valueOf(value));
break
;
case
"class java.math.BigDecimal"
:
newfield.set(newObject,
new
BigDecimal(Double.valueOf(value)) );
break
;
case
"class java.util.Date"
:
Date date =
null
;
if
(dateFormat!=
null
&&dateFormat.length>
0
){
date =
new
SimpleDateFormat(dateFormat[
0
]).parse(value);
newfield.set(newObject, date);
}
else
{
date=
new
SimpleDateFormat(
"EEE MMM dd HH:mm:ss Z yyyy"
, Locale.UK).parse(value);
}
newfield.set(newObject, date);
break
;
default
:
break
;
}
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package
com.hlj.IgnoreNullBean;
import
com.hlj.IgnoreNullBean.data.User;
import
com.hlj.IgnoreNullBean.data.UserNow;
import
java.math.BigDecimal;
import
java.util.Date;
/**
* 作者 :HealerJean
* 日期 :2018/12/13 上午10:54.
* 类描述:
*/
public
class
TestMain {
public
static
void
main(String[] args) {
User user =
new
User();
user.setAge(
25
);
user.setBigDecimal(
new
BigDecimal(
10.21
));
user.setDate(
new
Date());
user.setLongvalue(100L);
user.setDateStr(
"2018-12-09 00:00:00"
);
UserNow userNow =
new
UserNow() ;
JavaBeanUtil.setFieldValue(user,
"age"
,userNow,
"ageNow"
);
System.out.println(
"ageNow:"
+userNow.getAgeNow());
JavaBeanUtil.setFieldValue(user,
"bigDecimal"
,userNow,
"bigDecimalNow"
);
System.out.println(
"bigDecimalNow:"
+userNow.getBigDecimalNow());
JavaBeanUtil.setFieldValue(user,
"date"
,userNow,
"dateNow"
);
System.out.println(
"dateNow:"
+ userNow.getDateNow());
JavaBeanUtil.setFieldValue(user,
"longvalue"
,userNow,
"longvalueNow"
);
System.out.println(
"longvalueNow:"
+userNow.getLongvalueNow());
JavaBeanUtil.setFieldValue(user,
"dateStr"
,userNow,
"dateStrNow"
,
"yyyy-MM-dd HH:mm:ss"
);
System.out.println(
"dateStrNow:"
+userNow.getDateStrNow());
}
ageNow:
25
bigDecimalNow:
10.21000000000000085265128291212022304534912109375
dateNow:Fri Dec
14
19
:
27
:
07
CST
2018
longvalueNow:
100
dateStrNow:Sun Dec
09
00
:
00
:
00
CST
2018
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
package
com.duodian.youhui.admin.utils;
import
com.duodian.youhui.admin.Exceptions.AppException;
import
com.duodian.youhui.entity.db.taobao.TaobaoWechat;
import
java.lang.reflect.Field;
/**
* 作者 :HealerJean
* 日期 :2019/1/24 下午4:30.
* 类描述:判断是否为空 或者是null 工具
*/
public
class
JudgeNullUtils {
public
static
boolean
isNull(Object object,String ... fieldName){
try
{
for
(
int
i =
0
; i < fieldName.length; i++) {
Field field =
null
;
field = object.getClass().getDeclaredField(fieldName[i]);
field.setAccessible(
true
);
//暴力反射,获取获取数据
if
(field.get(object)==
null
){
//返回flase或者直接抛出异常,根据我们的情况而定
throw
new
AppException(fieldName[i]+
"不能为空"
);
}
}
return
true
;
}
catch
(NoSuchFieldException e) {
e.printStackTrace();
}
catch
(IllegalAccessException e) {
e.printStackTrace();
}
return
false
;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@ApiOperation
(value =
"添加淘宝营销总代理"
,
notes =
"添加淘宝营销总代理"
,
consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE,
response = ResponseBean.
class
)
@ResponseBody
@GetMapping
(
"addEsWechat"
)
public
ResponseBean addEsWechat(TaobaoEsWechat taobaoWechat ){
try
{
JudgeNullUtils.isNull(taobaoWechat,
"code"
,
"status"
);
return
ResponseBean.buildSuccess(taobaoEsWechatService.addTaobaoEsWechat(taobaoWechat));
}
catch
(AppException e) {
ExceptionLogUtils.log(e,
this
.getClass());
return
ResponseBean.buildFailure(e.getCode(),e.getMessage());
}
catch
(Exception e) {
ExceptionLogUtils.log(e,
this
.getClass());
return
ResponseBean.buildFailure(e.getMessage());
}
}
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://blog.csdn.net/u012954706/article/details/84985935 。
最后此篇关于JavaBean字段如何防止非空赋值的文章就讲到这里了,如果你想了解更多关于JavaBean字段如何防止非空赋值的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我已经为使用 JGroups 编写了简单的测试。有两个像这样的简单应用程序 import org.jgroups.*; import org.jgroups.conf.ConfiguratorFact
我有一个通过 ajax 检索的 json 编码数据集。我尝试检索的一些数据点将返回 null 或空。 但是,我不希望将那些 null 或空值显示给最终用户,或传递给其他函数。 我现在正在做的是检查
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Why does one often see “null != variable” instead of “
嗨在我们公司,他们遵循与空值进行比较的严格规则。当我编码 if(variable!=null) 在代码审查中,我收到了对此的评论,将其更改为 if(null!=variable)。上面的代码对性能有影
我正在尝试使用 native Cordova QR 扫描仪插件编译项目,但是我不断收到此错误。据我了解,这是代码编写方式的问题,它向构造函数发送了错误的值,或者根本就没有找到构造函数。那么我该如何解决
我在装有 Java 1.8 的 Windows 10 上使用 Apache Nutch 1.14。我已按照 https://wiki.apache.org/nutch/NutchTutorial 中提
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: what is “=null” and “ IS NULL” Is there any difference bet
Three-EyedRaven 内网渗透初期,我们都希望可以豪无遗漏的尽最大可能打开目标内网攻击面,故,设计该工具的初衷是解决某些工具内网探测速率慢、运行卡死、服务爆破误报率高以及socks流
我想在Scala中像在Java中那样做: public void recv(String from) { recv(from, null); } public void recv(String
我正在尝试从一组图像补丁中创建一个密码本。我已将图像(Caltech 101)分成20 X 20图像块。我想为每个补丁创建一个SIFT描述符。但是对于某些图像补丁,它不返回任何描述符/关键点。我尝试使
我在验证器类中自动连接的两个服务有问题。这些服务工作正常,因为在我的 Controller 中是自动连接的。我有一个 applicationContext.xml 文件和 MyApp-servlet.
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭10 年前。 问题必须表现出对要解决的问题的最低程度的了解。告诉我们您尝试过做什么,为什么不起作用,以
大家好,我正在对数据库进行正常的选择,但是 mysql_num_rowsis 为空,我不知道为什么,我有 7 行选择。 如果您发现问题,请告诉我。 真的谢谢。 代码如下: function get_b
我想以以下格式创建一个字符串:id[]=%@&stringdata[]=%@&id[]=%@&stringdata[]=%@&id[]=%@&stringdata[]=%@&等,在for循环中,我得到
我正在尝试使用以下代码将URL转换为字符串: NSURL *urlOfOpenedFile = _service.myURLRequest.URL; NSString *fileThatWasOpen
我正在尝试将NSNumber传递到正在工作的UInt32中。然后,我试图将UInt32填充到NSData对象中。但是,这在这里变得有些时髦... 当我尝试将NSData对象中的内容写成它返回的字符串(
我正在进行身份验证并收到空 cookie。我想存储这个 cookie,但服务器没有返回给我 cookie。但响应代码是 200 ok。 httpConn.setRequestProperty(
我认为 Button bTutorial1 = (Button) findViewById(R.layout.tutorial1); bTutorial1.setOnClickListener
我的 Controller 中有这样的东西: model.attribute("hiringManagerMap",hiringManagerMap); 我正在访问此 hiringManagerMap
我想知道如何以正确的方式清空列表。在 div 中有一个列表然后清空 div 或列表更好吗? 我知道这是一个蹩脚的问题,但请帮助我理解这个 empty() 函数:) 案例)如果我运行这个脚本会发生什么:
我是一名优秀的程序员,十分优秀!