Java 或 Android属性生成工具

在开发过程中经常会遇到NullPointerException空指针异常的问题,其中大部分是数据空指针报出来的;如以下情况均会发生异常;

  1. 定义了一个String变量
    private String username = null;
    
    
    public String getUsername() {
        return username;
    }
    此时直接用username.toString()就会报异常,也可以用Strinv.valueOf()但这种方式返回的还是null;
    其实对于String类型来说通过以下转换没什么意义;
  2. 如果是接口直接返回的json数据里大部分属性返回的值基本是null且数据类型基本是大数据类型,如
    Integer
    
    Long
    Double
    UriList或String类型,如果还是通过上面1定义的方式去获取属性值的话;那么每个地方去获取或使用的地方都要加上判断(是否为null);主要有以下缺点:1.大量出现使用繁琐;2.如果有漏写之处(忘记加判断)或没有通过try cache捕获异常时很容易导致应用崩溃;3.在Android Studio自带的属性生成插件里暂做不到从属性定义里的注解里直接放到get或set里;即便能配出也没有办法是否为null值;
    接下就来讲讲如果通过slcore属性生成器(
    http://tools.slcore.com/tools/default.html)快速生成想要的对象;
首页我们需要定义一个类TestBean,接下来定义一个成员变量这一点和以前的写法一致;
public class TestBean {
    /**
     * uri注解
     */
    private Uri uri = null;
    /**
     * 时间注解
     */
    private Long time = null;
    /**
     * name注释
     */
    private String name = null;
    /**
     * 数据id
     */
    private Integer id = null;
    /**
     * 标签列表
     */
    private List<String> tagList = null;
}
此时我们打开以上提供的属性生成工具连接地址;
打之后ctrl+A全选你刚才定义好的变量,在左边的代码生成配置区域粘贴;(如下图)

根据图中的操作生成后的结果如下:

package com.rongxun.jrjr.Beans;

import android.net.Uri;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/5/26.
 */
public class TestBean {

    /**
     * 获取uri注解
     */
    private Uri uri = null;

    /**
     * 获取时间注解
     */
    private Long time = null;

    /**
     * 获取name注释
     */
    private String name = null;

    /**
     * 获取数据id
     */
    private Integer id = null;

    /**
     * 获取标签列表
     */
    private List<String> tagList = null;

    /**
     * 获取uri注解
     */
    public Uri getUri() {
        if (uri == null) {
            uri = Uri.EMPTY;
        }
        return uri;
    }

    /**
     * 设置uri注解
     * @param uri
     */
    public void setUri(Uri uri) {
        this.uri = uri;
    }

    /**
     * 获取时间注解
     */
    public Long getTime() {
        if (time == null) {
            time = (long)0;
        }
        return time;
    }

    /**
     * 设置时间注解
     * @param time
     */
    public void setTime(Long time) {
        this.time = time;
    }

    /**
     * 获取name注释
     */
    public String getName() {
        return name;
    }

    /**
     * 设置name注释
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取数据id
     */
    public Integer getId() {
        if (id == null) {
            id = 0;
        }
        return id;
    }

    /**
     * 设置数据id
     * @param id
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 获取标签列表
     */
    public List<String> getTagList() {
        if (tagList == null) {
            tagList = new ArrayList<String>();
        }
        return tagList;
    }

    /**
     * 设置标签列表
     * @param tagList
     */
    public void setTagList(List<String> tagList) {
        this.tagList = tagList;
    }
}

在对应的get方法里如果是空就会返回相应的默认值;那么在使用相应值的时候就可以放心的使用;

猜你喜欢

转载自blog.csdn.net/smart_ljh/article/details/52072835
今日推荐