`
yourenyouyu2008
  • 浏览: 287667 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

空对象

阅读更多

问:

关于返回值, null, 和空对象的处理?

当函数的返回值的签名为对象,函数的最终结果为空时,是该返回null还是一个空对象呢?

我的程序遇到一个这样的问题,在Builder类中有一个函数

public String buildA(List infoData), 当计算结构为空是该返回null还是""呢?

在Director其中组装产品时会重复调用这个函数,当返回null时,每次都要检查这个对象是否

为空,因为结果要添加到StringBuffer中, 当返回""时, 不需要检查是否为空,直接添加即可,

公司的高手是返回null,每次都检查,感觉这样做很烦琐。

答:

返回null这种习惯估计是从C/C++中带来的.
我的处理是除非在某些场合下null也有其意义的时候才返回null.
否则要么返回一个empty的对象,要么抛出一个异常.

public String buildA(List infoData)
这种情况返回""是恰当的也是符合逻辑的.

hibernate相关处理

使用了空对象模式,应用不需要进行null判断

load

WfcpErrsinfomy=session.load(WfcpErrsinfo.class,111);

my.getA();

load返回的是MyCla的代理类实例,当没有对应的主键时也不为null,而是个空的代理类,当调用任何方法时就抛出异常。

org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [cn.ccb.wfcp.bo.brules.WfcpErrsinfo#1111]


createQuery.list

List list = session.createQuery("from WfcpErrsinfo bo where bo.reId=11111").list();
System.out.println(list.size());//
当没有记录时返回空的list ,list.size()==0.

定义各种空对象

空对象会节省内存开销

List lt=nodes.get(node.getTreeNodeId());
   if(lt==null){
    lt=new ArrayList(0);
   }
   return lt;

分享到:
评论

相关推荐

    3dmax一键清除空对象

    然而,随着项目的进展,场景中可能会出现许多不必要的空对象,这些对象可能是因为历史操作或某些插件产生的。空对象在3ds Max中是指没有几何体、材质或其他实质内容的对象,它们可能会占用资源并导致场景管理上的...

    关于axios返回空对象的问题解决

    但打印出来的时候就变成了空对象。 分析原因: 返回的参数都是正确的,只是打印的时候有问题,所以是打印的代码有误 查了一下 axios 的官方文档,才知道 console.log 的变量与字符串之间不能用 ‘+’ 连接,应该用 ...

    c++空对象指针也可调用成员函数.rar

    在C++编程语言中,一个重要的特性是虚函数(virtual functions),这使得即使通过空对象指针也能调用成员函数,这种行为被称为“空指针调用”或“空对象调用”。本篇将深入探讨这个主题,以及它在C++中的实现原理和...

    arcsde空对象查询

    ### arcsde空对象查询 #### 知识点一:什么是空对象及产生的原因 在数据库管理系统(DBMS)中,特别是在使用ArcSDE(ArcGIS Server Data Engine)进行空间数据管理时,可能会遇到一些无效的对象,这些对象被称为...

    3dmax空对象清除器下载

    然而,随着项目的发展,可能会出现“空对象”(Null Objects),这些对象没有与其他任何对象关联,但在场景中占用资源。"3dmax空对象清除器"就是为了解决这一问题而设计的实用工具。 空对象通常是在3ds Max中用作...

    设计模式-空对象模式

    空对象模式是一种行为设计模式,它提供了一个默认行为,当对象不存在或者不能执行某项操作时,可以使用这个默认行为作为替代,避免程序出现异常或空指针引用。在iOS开发中,空对象模式的应用可以帮助我们更好地处理...

    java常用设计模式-空对象模式

    java常用设计模式-空对象模式 空对象模式(Null Object Pattern)是一种行为设计模式,它允许我们在不返回 null 的情况下提供默认行为。这种模式通常用于需要处理 null 对象的情况下,以避免NullPointerException ...

    【Java设计模式】空对象模式

    空对象模式是一种重要的Java设计模式,它提供了一种无缝处理空对象的方式,无需进行空检查,从而简化Java应用程序。 ## 二、详细解释及实际示例 1. **实际示例**: - 空对象模式的一个现实世界类比可以在客户服务...

    空对象模式

    ### 空对象模式详解 #### 一、概念与应用场景 空对象模式(Null Object Pattern)是一种常用的软件设计模式,其主要目的是为了替代程序中可能出现的`null`引用,从而避免因为`null`值而产生的运行时错误或者逻辑...

    空对象模式虚函数实现运行时多态策略模式

    **空对象模式** 空对象模式是一种行为设计模式,它的主要目的是在系统中处理"无对象"的情况,避免程序出现空指针异常或者条件判断。在空对象模式中,我们会创建一个"空对象"来代表"无对象"的状态,这个空对象会提供...

    36丨 实战二(上):程序出错该返回啥?NULL、异常、错误码、空对象?1

    本节我们将探讨在异常情况下,函数应该如何设计其返回值,包括使用NULL、异常、错误码、空对象等不同策略。 首先,我们需要了解异常处理的基本概念。异常是在程序执行期间发生的不正常情况,通常由运行时错误或意外...

    js删除对象/数组中null、undefined、空对象及空数组方法示例

    在JavaScript编程中,有时我们需要处理复杂的数据结构,例如对象和数组,确保它们不包含无效的值,如`null`、`undefined`、空对象或空数组。这些无效值可能会导致错误或不必要的处理开销。本篇文章将深入探讨如何在...

    optional-lite:optional lite - 一个类似于 C++17 的可选对象,一个用于 C++98、C++11 和更高版本的单文件头库中的可为空对象

    optional lite:C++17-like optional 的单文件头版本,C++98、C++11 和更高版本的可为空对象 内容std::optional、optional lite 和Boost.Optional 的比较报告与构建测试实施说明可选的其他实现注释和参考附录 示例...

    js判断空对象的实例(超简单)

    在JavaScript中,空对象是一个具有引用类型的值,它在内存中占据一定空间,即使没有添加任何属性或方法。相反,空字符串、`null`和`undefined`等基本类型可以直接进行相等比较,因为它们在内存中表示方式是相同的。 ...

    NullObjectGenerator:一个为任何泛型类创建空对象的库

    NullObjectGenerator是一个针对Java开发的库,其主要功能是生成任意泛型类的空对象。在软件设计中,空对象模式是一种重要的设计模式,它允许我们处理缺失或不存在的数据,而不是抛出异常或者进行复杂的条件判断。这...

    Vue前端判断数据对象是否为空的实例

    Vue提供了强大的前端开发架构,很多时候我们需要判断数据对象是否为空,使用typeof判断是个不错选择,具体代码见图。 补充知识:vue打包后 history模式 跟子目录 静态文件路径 分析 history 根目录 路由mode变为...

    PHP使用new StdClass()创建空对象的方法分析

    创建一个没有成员方法和属性的空对象。 很多时候,程序员们会将一些参数配置项之类的信息放在数组中使用,但是数组操作起来并不是很方便,很多时候使用对象操作符->xxx比数组操作符[‘xxx’]要方便不少。于是就需要...

    js中判断对象是否为空的三种实现方法

    在JavaScript中,一个空对象是指没有任何属性(key-value对)的对象,例如`{}`。现在我们来看看三种判断方法: 1. **基于类型检查**: ```javascript if (typeof x === "undefined") { // 对象x未定义 } ``` ...

Global site tag (gtag.js) - Google Analytics