最近在做一个项目,碰见了一个很奇怪的问题:A a = new A(); if(a!=null){ ....................} a为null 要求: a的值为null, 但把a这个对象当做 空 该如何做 其中 A a = new A(); a对象在后面的程序中被调用过, 所以不能用 A a = null; 这种方式来解决 跪求 解答…… 阿门……
解决方案 »
- structs 验证出错。
- java web整合开发王者归来 这本书怎么样?
- 求解,关于spring装载bean时单例的疑惑
- 重复提交的问题
- 含有主外键怎么增删改查
- 难倒一片高手
- 连接数据库问题
- 200分求struts文件下载实例。分不够可再加。
- 请问怎么把tomcat5与iis6集成起来,谢谢!!!
- 用java调用web service的问题
- 请大家指点admin is not mapped [from admin where username=? and password=?]
- 大家帮帮忙哦,程序报这个错是什么原因哦Exception in thread "main" java.lang.NoClassDefFoundError
public class A{
boolean isNull="true";//true 为空 ,false则不为空
} = = 。。不知道你是不是这个意思
public class A{
public String aa;
public String bb;
public String cc;
}public class Test { public static void main(String[] args) {
A a = new A();
****
****
// 判断a是不是null
if(a == null){
*****
}
}
}(1)
A a = null; 这时,a == null 是true(2)
A a = new A(); 这时 ,a ==null 是false要求:
作为情况(2)时,想 a 为null 是true的处理该怎么做???
不进入if循环,并且 对象a 会被后面的程序调用…………3Q
clone ??? 真没用过,求指点……
if(a != null && !StringUtil.isAllEmpty(a.arg1,a.arg2)){
************
}
不知是不是这个意思呢
public class A { public String aa;
public String aa;
public String aa; ************(各种属性以及方法)}public class Test { /**
* TODO Javadoc
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new A();
**********
**********
if(a!= null){
************(各种处理)
} }}(1)
A a = null a == null 为true
(2)
A a = new A(); a == null 为false要求:
由于对象a在程序后面呗调用,所以用(2),但是要使 对 a 的判断 a == null 为true
该怎么做???
之所以有这个if 就是怕出现 数据库没数据的情况,一旦出现空 就直接在下面程序报错 对象a 用内存地址,有空间,所以用 a == null 始终是false 这个我知道现在是 我想 在取数据 取不到, 也不让a 进入if里面……
if(a != null && !StringUtil.isAllEmpty(a.arg1,a.arg2)){
************
}但是A里面要是有十几个,或者更多,这样判断岂不是非常累赘啊。人家就是想要个简便的方法嘛
同求啊
绝对不是的 …… 这些都懂…… 我现在正在看 对象.clone()这个方法, 现在还很晕乎,有木有那位大侠,能讲解???
使用这个类可以获得一个对象的所有属性。具体方法你自己找找吧
{
//xxx
}isEmpty自己实现一下。a为“空”代表什么意思,这个只能由你决定,没有普适的这种“空”,所以isEmpty也只能你自己写。如果你希望有一个简单的isEmpty,那么首先你要明确说明这里的“空”具体指什么(是指对象的所有属性都为0或者null或者0.0或者false吗?)。
恩,对的, 我要说的就是你这个意思……这个“空”指的就是 value 为空 就是 对象 a 的value为空 就是 对象 a 有n个 属性 岂不是 要写N个 value 的判断,所以……
if(属性1不为空 && 属性2不为空 && 。。)这样的至少一个为空就不执行的话,写成
if(属性1不为空 || 属性2不为空 || 。。)这样的
a是你实例化出来的A a = new A();
a=GetData();
if(a!=null){ ....................}
A a = getAFromDAO( );
if(a != null ){
//只要这个对象不管是什么属性有值 就会进入这if语句
a.getXXX();
}
else{
//如果不管什么属性都没值就会进入这个else
//打印错误}
这个想法非常好,但是 :请问如何具体实现呢???呵呵……难道是 size???
a怎么可能不为空呢?
a = null既然后面要用,那a肯定不能给null了,
所以楼主还是相别的办法解决这个问题吧,比如添加一个属性来控制。
new出来后用null来判断是肯定不行的,new了就在堆内存分配空间了,这和null的意义完全相反。利用反射,我觉得你可以这样做:
先从数据库获得A类的对象a,具体怎么获得看你用的什么底层框架。然后用反射来处理判断,可以避开对每个VALUE进行判断。
Boolean isEmpty=true;//标记变量
Field[] fieldArray=A.getDeclaredFields();
for(Field field:fieldArray){
Object certainValue=field.get(a);
if(certainValue!=null){
isEmpty=false;
break;
}
}然后根据标记变量的值来做下面的if else判断,isEmpty为true则a对象每个字段都为空,否则就至少有一个字段有值。
或者里面有string类型. 虽然数据库返回没有数据但是返回的是一个空字符串呢?
我比较赞同在A这个类里面加一个isEmpty方法. 这个方法里面判断所需要检查的属性是否有值.
在判断的时候if ( null != a && !a.isEmpty() )然后执行后面代码.public class A {
private int aId;
private String aName;
private List<String> childs; /**
* 此处省略很多get/set方法
*/
public boolean isEmpty() {
if ( this.aId != 0 && aName != null && !"".equals(aName) && null != childs
&& !childs.isEmpty() ) {
return false;
}
return true;
}
}public class Test {
public static void main(String[] args) {
A a = new A();
if ( null != a && !a.isEmpty() ) {
/**
* a不为null且属性值都有
*/
}
}
}
自己写个方法判断下啊,不要说逐个逐个遍历属性很麻烦什么的
private int aId;
private String aName;
private List<String> childs; /**
* 此处省略很多get/set方法
*/
}47楼考虑是很有道理的, 但是这次项目 还暂时没有这个方面的问题, 46楼的解法相当好…… 其实A类就是一个DAO……至于如何获得 那就是自己看着写,谢谢……
Field[] fieldArray=A.getDeclaredFields();应该是Field[] fieldArray=A.class.getDeclaredFields();另外47楼说的对,这个办法欠妥,我也没想到有什么能挽回的方法,看来只能添加isEmpty()方法了。