`
shangmw
  • 浏览: 22126 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于返回值的处理

阅读更多

 我有一个方法,里面的逻辑代码都一样,而且参数都一样,只是返回值不同。有时候需要的返回值是boolean类型的,有时候需要是List类型等。

因为代码的重用性,所以我不想再写其他的方法。请问有什么办法能解决这个问题?

分享到:
评论
9 楼 jinlibing 2007-05-06  
多写个方法,copy 就好了。。
8 楼 calmness 2007-05-06  
你没看明白他说的方法吗?
实际上返回值仅仅是一个中间变量。


这个就是他的意思,不要将不同的结果作为返回值处理,而是作为一个参量或者判断依据来做,例如

引用

    someFunction(){
       List result = getresult();
       if(result != null && result.size > 0){
           do1(result);
       }else{
           do2(result);
       }
    }


我这个例子和他的有点不一样,他为了达到重用的效果,将不同的处理方式作为不同的TASK对像,而我的方式仅仅是作为不同的方法即可,避免过度重用。
7 楼 shangmw 2007-05-06  
请问fsword的方式是什么,能否详细说一下
6 楼 calmness 2007-05-06  
仅仅只是简单两种情况,简单的抽出公用的逻辑即可,当然如果你认为以后还有必要扩展的话,可以使用fsword的方式,重用是需要代价的,不宜过度重用。
5 楼 shangmw 2007-05-05  
谢谢楼上大哥,在下获益匪浅

我现在在一家公司里用EJB3.0来做一个电力相关的系统,当然在下才刚出来,经验和其他方面都还不够,所以在做的时候都不是很好

我现在想做这样的一个方法,这个方法是查询数据库的。如果验证数据库中是否有这样的一条数据时,我想它返回一个BOOLEAN值。有时候想显示结果,这时我想它返回一个List值的返回值

由于这样的问题,所以我才考虑怎么来解决这个返回值
4 楼 fsword 2007-05-05  
我们得到固定接口类型的返回值并不仅仅是编程语言的约束,一般还是因为我们可以对这个返回值进行统一的处理,这也是多态的体现。<br/>
比方说:<br/>
<div class='code_title'>java 代码</div>
<div class='dp-highlighter'>
<ol class='dp-j' start='1'>
    <li class='alt'><span><span>YourTask task = someFunction();  </span></span></li>
    <li class=''><span>task.call();  </span></li>
</ol>
</div>
<br/>
这里的YourTask一般就是一个接口类型,它有call这个方法,所以我们的返回值类型是统一的。<br/>
<br/>
具体到你的情况,也许是设计思路有问题,你的返回值是用来做什么的?能否不使用返回值这种方式?<br/>
<br/>
例如:<br/>
<div class='code_title'>java 代码</div>
<div class='dp-highlighter'>
<ol class='dp-j' start='1'>
    <li class='alt'><span><span>YourTask yours = someFunction(parameter1);  </span></span></li>
    <li class=''><span>task.call();  </span></li>
    <li class='alt'><span>OtherTask others = someFunction2(parameter2);  </span></li>
    <li class=''><span>other.call2();  </span></li>
</ol>
</div>
如果这里someFunction和someFunction2几乎一样,那么可以这样:<br/>
<div class='code_title'>java 代码</div>
<div class='dp-highlighter'>
<div class='bar'> </div>
<ol class='dp-j' start='1'>
    <li class='alt'><span><span class='keyword'>public</span><span> </span><span class='keyword'>void</span><span> someFunction(String parameter){  </span></span></li>
    <li class=''><span>    <span class='comment'>//your replication code</span><span>  <br/>
    </span></span></li>
    <li class='alt'><span>    Handler.handle(result);  </span></li>
    <li class='alt'><span>}</span></li>
    <li class='alt'><span><span class='keyword'/></span></li>
    <li class='alt'><span><span class='keyword'>class</span><span> Handler{  </span></span></li>
    <li class=''><span>    <span class='keyword'>public</span><span> </span><span class='keyword'>static</span><span> </span><span class='keyword'>void</span><span> handle(YourTask task){  </span></span></li>
    <li class='alt'><span>        task.call();  </span></li>
    <li class=''><span>    }  </span></li>
    <li class='alt'><span>    <span class='keyword'>public</span><span> </span><span class='keyword'>static</span><span> </span><span class='keyword'>void</span><span> handle(OtherTask task){  </span></span></li>
    <li class=''><span>        task.call2();  </span></li>
    <li class='alt'><span>    }  </span></li>
    <li class=''><span>}</span></li>
    <li class=''><span/></li>
    <li class=''><span>someFunction(parameter1);  </span></li>
    <li class=''><span>someFunction(parameter2);<br/>
    </span></li>
</ol>
</div>
<br/>
这时,实际上返回值仅仅是一个中间变量。<br/>
<br/>
顺便插一句,代码的重用不是没有前提,没有代价的,为了重用而重用并不总是合理的。<br/>
<br/>
<strong>shangmw 写道:</strong><br/>
<div class='quote_div'>
<p> 我有一个方法,里面的逻辑代码都一样,而且参数都一样,只是返回值不同。有时候需要的返回值是boolean类型的,有时候需要是List类型等。</p>
<p><font>因为代码的重用性,所以我不想再写其他的方法。请问有什么办法能解决这个问题?</font></p>
</div>
<br/>
<br/>
<br/>
3 楼 shangmw 2007-05-05  
我现在就是一个单独的方法,该如何抽出来成一个独立的方法

能不能写一个例子看看呀
2 楼 bestsuke 2007-05-05  
 
1 楼 calmness 2007-05-05  
既然逻辑基本都一样那就应该抽出来形成一个独立的方法啊,再根据返回值来添加不同的方法调用该方法即可

相关推荐

    ajax请求后台接口数据与返回值处理js的实例讲解

    本文将详细讲解如何使用JavaScript和jQuery库来发起AJAX请求,获取后台接口数据,并根据返回值进行处理。 知识点一:AJAX的基本概念 AJAX(Asynchronous JavaScript and XML)是异步JavaScript和XML的简称。它不是...

    [springboot源码探索]返回值处理.md

    [springboot源码探索]返回值处理

    HttpClientUtil工具类 里面包含GET POST 及返回值处理

    - **返回值处理**:HttpClientUtil通常会处理HTTP响应的状态码和错误信息,确保返回给调用者的数据是完整的,没有错误的HTTP响应状态。 3. **使用步骤**: - **导入依赖**:首先,项目中需要引入Apache ...

    04.使用CXF处理JavaBean式的复合类型和List集合类型的形参和返回值

    在本文中,我们将深入探讨如何使用Apache CXF框架来处理JavaBean式的复合类型以及List集合类型的参数和返回值。CXF是一个开源的、强大的Web服务框架,它支持多种Web服务标准,包括SOAP、RESTful等,并且允许开发者以...

    关于有返回值的存储过程

    标题“关于有返回值的存储过程”着重提到了具有返回值这一特性,这通常指的是存储过程可以返回一个或多个结果以供后续操作使用。 存储过程具有返回值的主要好处包括提高性能、增强安全性、降低网络流量以及提供更好...

    弹出界面返回值

    在本话题中,我们将深入探讨"弹出界面返回值"这一概念,特别是在使用greybox(一种模拟全屏弹窗效果的技术)时如何处理返回值。 首先,让我们理解“弹出界面”是什么。在网页或应用程序中,弹出界面通常是指那些在...

    执行外部exe获取返回值

    因此,主程序需要捕获和处理这些异常,确保能正确获取返回值。 6. **返回值解析**:子程序返回的值通常是一个整数,不同的数值代表不同的执行状态。例如,0通常表示成功,非零值表示错误代码。主程序需要根据这些...

    C#WinForm获取子窗口返回值

    本文将详细介绍如何在C# WinForm中实现子窗口的返回值处理以及窗口取消的处理。 首先,我们需要创建一个子窗口类。这个类通常是继承自`System.Windows.Forms.Form`的。在子窗口中,我们可以定义一些属性或者方法来...

    获取所有委托返回值

    "获取所有委托返回值"这个主题涉及到如何在委托链中收集并处理每个委托方法的返回结果。 在标准的委托调用中,如果一个委托实例绑定了多个方法,执行委托时只会返回最后一个方法的返回值。这是因为委托本质上是一个...

    python使用threading获取线程函数返回值的实现方法

    然而,Python的`threading`模块本身并不直接支持获取线程函数的返回值,这需要我们通过一些额外的方式来实现。以下将详细解释如何在Python中使用`threading`获取线程函数的返回值。 首先,我们需要理解`threading`...

    AJAx发送请求,获取返回值,判断处理返回结果

    AJAx发送请求,获取返回值,判断处理返回结果

    shell查看返回值,shell查看返回值,shell查看返回值,

    在Shell脚本编程中,了解如何查看和处理命令的返回值是至关重要的。这涉及到程序的错误检测、流程控制以及脚本的正确执行。本文将深入探讨这一主题,并结合相关文件内容进行详细讲解。 首先,我们需要理解在Shell中...

    dwr对各种类型返回值的处理实例

    在DWR中,处理各种类型的返回值是其强大功能的一部分,它支持多种数据类型,包括基本类型、对象、数组、集合、Map等。下面将详细介绍DWR如何处理这些不同类型的返回值。 1. **基本类型**: DWR可以轻松处理Java的...

    TTP229触摸代码以及触摸返回值处理

    自己总结的ttp229触摸代码,触摸代码以及触摸按键处理

    易语言DLL返回值扩展

    子程序的参数传递和返回值处理是模拟DLL模块的关键部分,需要根据DLL的实际接口进行适配。 API_复制内存是系统级接口(API)中的一种常见操作,主要用于在内存之间复制数据。在易语言中,调用API函数可以使用内建的...

    asp获取子窗体返回值

    "asp获取子窗体返回值"这一主题就是关于如何在父窗口中获取子窗口执行后产生的结果,并利用这些返回值来更新父窗口的部分内容。以下是对这个知识点的详细讲解: 首先,我们需要理解ASP的基本概念。ASP是一种由微软...

    为什么fread(),fwrite()的返回值总是为0,但是读写文件正常

    这两个函数在处理大量数据时非常有用,但初学者可能会遇到一些困惑,尤其是当它们的返回值不按预期工作时。这里我们将详细探讨为什么`fread()` 和 `fwrite()` 的返回值可能为0,以及如何正确理解和使用它们。 `...

    模态窗口 跨域获取返回值

    然而,"模态窗口 跨域获取返回值"这个主题提供了一种解决方案,通过IFRAME的多层嵌套来实现跨域数据传递。下面将详细介绍这一技术。 模态窗口(Modal Window)通常指的是一个在用户与主页面交互时弹出的窗口,它...

    异步调用的参数及返回值

    ### 异步调用的参数及返回值处理详解 #### 一、引言 在现代软件开发中,异步编程模式越来越受到重视。它能够有效提高应用程序的响应速度和资源利用率,尤其在网络请求、文件读写等耗时操作中表现突出。在C#语言中,...

    IntelliJ IDEA自动设置代码注释的方法(带参数,带返回值,如果没有则跳过参数或返回值方法

    2. 添加两个变量,分别用于处理参数列表和返回值: - **Variable Name**: `params` - **Expression**: 使用Groovy脚本语言编写,以解析方法参数: ``` groovyScript("def result=''; def stop=false; def params...

Global site tag (gtag.js) - Google Analytics