`

为别人提供方法工具类的时候传递参数有什么特别的要求吗?

阅读更多

昨天花时间为别人写了个工具类,作用就是生成Rss文件,具体代码如下:

public class RssBuilder {
 private SyndFeed feed;
 private List entries;
 private SyndEntry entry ;
 public RssBuilder(){
  feed = new SyndFeedImpl();
  feed.setFeedType("rss_2.0");
  entries = new ArrayList();
 }
 
 
 public void createChannelImage(String title,String link,String url,String description) throws Exception{
  SyndImage image = new SyndImageImpl();
  image.setTitle(title);
  image.setLink(link);
  image.setUrl(url);
  image.setDescription(description);
  feed.setImage(image);
 }
 
 /**
  * 创建一个频道
  * @param title 频道标题
  * @param link 频道对应的连接
  * @param description 频道描述
  * @param language 频道所用语言
  * @param pubDate 频道发布时期
  * @param copyright 版权所有
  * @throws Exception
  */
 public void createChannel(String title,String link,String description,String language,Date pubDate,String copyright) throws Exception{
  feed.setTitle(title);
  feed.setLink(link);
  feed.setDescription(description);
  feed.setLanguage(language);
  feed.setPublishedDate(pubDate);
  feed.setCopyright(copyright);
 }
 

 
 /**
  * 添加新闻子项
  * @param title 标题
  * @param link 连接地址
  * @param description 简单描述
  * @param pubDate 发布日期
  * @param category 所属范围
  * @param author 发布作者
  * @throws Exception
  */
 public void createItems(String title,String link,String description,Date pubDate,String category,String author) throws Exception {
  entry = new SyndEntryImpl();
  //设置新闻标题
  entry.setTitle(title);
  //设置新闻的连接地址
  entry.setLink(link);
  //设置新闻简介
  SyndContent content = new SyndContentImpl();
  content.setType("text/plain");
  content.setValue(description);
  entry.setDescription(content);
  //设置发布时间
  entry.setPublishedDate(pubDate);
  //设置频道所属的范围
  SyndCategory cate = new SyndCategoryImpl();
  cate.setName(category);
  List cateList = new ArrayList();
  cateList.add(cate);
  entry.setCategories(cateList);
  //设置作者
  entry.setAuthor(author);
  //将新闻项添加至数组中
  entries.add(entry);
 }
 
 /**
  * 添加新闻子项
  * @param title 标题
  * @param link 连接地址
  * @param description 简单描述
  * @param pubDate 发布日期
  * @param category 所属范围
  * @param author 发布作者
  * @param enclosure 流媒体播放文件地址
  * @throws Exception
  */
 public void createItems(String title,String link,String description,Date pubDate,String category,String author,String enclosure) throws Exception {
  entry = new SyndEntryImpl();
  //设置新闻标题
  entry.setTitle(title);
  //设置新闻的连接地址
  entry.setLink(link);
  //设置新闻简介
  SyndContent content = new SyndContentImpl();
  content.setValue(description);
  entry.setDescription(content);
  //设置发布时间
  entry.setPublishedDate(pubDate);
  //设置频道所属的范围
  SyndCategory cate = new SyndCategoryImpl();
  cate.setName(category);
  List cateList = new ArrayList();
  cateList.add(cate);
  entry.setCategories(cateList);
  //设置作者
  entry.setAuthor(author);
  //设置流媒体播放文件
  SyndEnclosure en = new SyndEnclosureImpl();
  en.setUrl(enclosure);
  List enList = new ArrayList();
  enList.add(en);
  entry.setEnclosures(enList);
  //将新闻项添加至数组中
  entries.add(entry);
 }
 /**
  * 生成XML文件
  * @param filePath 文件保存路径和名称
  * @throws Exception
  */
 public void buildChannel(String filePath) throws Exception {
  feed.setEntries(entries);
  SyndFeedOutput output = new SyndFeedOutput();
  Writer writer;
  writer = new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8");
  output.output(feed, writer); 
 }
}

 

  让我们的项目负责人看了,他要我把createItems()方法中的多个参数再封装一个类,让用户传的时候只传一个包含这个类的List对象,想来想去就是不明白,为什么要这样呢?

  按照我现在的写法的话,别人用的时候也不用再写什么特别的类啦,只用把自己从数据库里查询出来的结果的对象以参数的形式传递过来就可以啦,这样不就更简单啦。

  为什么一定要传一个List对象呢?

  写工具类的时候有什么特别的要求吗?

分享到:
评论
3 楼 lqql 2008-07-14  
参数个数太多了!!!!
2 楼 wallen 2008-07-14  
   像你这种这么多参数的方法根本经不起动态变化,别告诉我你的动态变化是写了几个重载的方法,那到底几个重载的方法才够呢?如果参数列表有100种组合变化,是否要写100个重载方法呢?
    你没有考虑到别人使用你这些方法的感受,人家要按照你给定的参数顺序,还要小心谨慎地生怕位置对错,你可以换位思考一下,我只将需要的参数塞给一个对象,然后将这个对象传给调用的方法,具体怎么处理那就是接口作者的问题了。
    你想想一个对象传过来,你还用写那么多重载方法么?对己对人其实都方便,另外 如果用的是框架技术从数据库直接调出个对象出来,用你这个方法那就是更加糟糕至极了...
1 楼 franktony 2008-07-11  
throws Exception

这个exception调用者知道怎么处理吗?
不知道的话,建议扔个RuntimeException,不要强制他去catch

相关推荐

    kotlin工具类.zip

    在工具类中,可能会定义一些数据类用于封装特定的数据结构,方便数据的传递和处理。 6. **密封类与枚举** 封闭类是Kotlin中一种限制继承范围的类,常用于表示有限的、已知的状态集合。而枚举则更直观地表示固定...

    微信支付工具类

    微信支付工具类是Java开发中用于与微信支付接口交互的核心组件,主要用于实现各种支付相关的功能。这个工具类通常封装了微信支付的API调用,使得开发者可以更方便地在自己的后台系统中集成微信支付功能。以下是对这...

    Android集成微信支付工具类

    总的来说,这个工具类为开发者提供了便捷的微信支付集成方式,减少了手动处理复杂支付流程的工作量。开发者只需要按照说明修改必要的参数,调用工具类的方法即可实现支付功能。同时,它也展示了如何在Android应用中...

    行业分类-外包设计-业务质量参数的传递方法的介绍分析.rar

    本文将深入探讨“业务质量参数的传递方法”,这是确保外包设计项目成功的关键因素之一。 首先,业务质量参数是衡量设计成果是否满足客户需求和预期的一系列标准。这些参数可能包括但不限于:功能性、用户体验、性能...

    支付通用工具类(适用于支付及查询)

    - PayUtils通常会封装各个支付平台(如支付宝、微信支付、银联等)的API调用,提供统一的调用接口,使得开发者无需关注具体的支付实现细节,只需按照工具类的规范传递参数即可。 2. **参数签名与验签** - 在支付...

    微信退款工具类,拿走放到web项目中可直接使用

    - 参数合法性:传递给工具类的退款参数必须符合微信支付接口的规范。 - 安全性:在生产环境中,敏感信息如API密钥应妥善保管,避免泄露。 总结来说,微信退款工具类是实现微信支付退款功能的关键组件,它通过封装...

    php开发短信接口平台的工具类

    7. **回调处理**:如果短信服务提供商提供了回调功能,工具类可能会有处理这些回调的函数,比如用于确认短信发送状态或接收回复。 8. **模板和变量替换**:为了方便发送格式化的短信,工具类可能会支持预定义的模板...

    支付宝支付、微信支付工具类PayCommonUtil

    "支付宝支付、微信支付工具类PayCommonUtil"是一个专为处理这两种支付方式而设计的实用工具类,它封装了一系列与支付相关的功能,简化了开发过程。下面我们将深入探讨这个工具类的关键知识点。 1. **创建交易对象**...

    微信红包发放工具类【完整代码】

    微信红包发放工具类是微信支付接口的一个重要组成部分,主要用于实现线上活动中的红包发放功能。这个压缩包提供的代码包含了实现这一功能的关键文件,包括API接口、配置文件和DEMO示例。接下来,我们将深入探讨这些...

    JavaBean和beanutils工具类的学习

    JavaBean和BeanUtils工具类是Java开发中常用的技术,它们主要应用于对象属性的访问和操作。JavaBean是一种规范,用于创建可重用的组件,它的核心特点是在类中定义私有成员变量,并提供对应的getter和setter方法来...

    C#中关于方法参数的详解

    ### C#中的方法参数详解 在C#编程语言中,方法是封装一组执行特定任务的语句块。方法参数则是用于向方法传递信息的关键...这些参数类型为开发者提供了强大的工具,使得能够更加灵活地设计和实现功能丰富的应用程序。

    二维码工具类

    6. **静态方法设计**:为了方便使用,`QRCodeUtil`通常设计为工具类,所有的方法都是静态的,不需要实例化对象即可调用。例如,`generateQRCode(String data, int width, int height)`和`decodeQRCode(BufferedImage...

    Java参数分析

    方法引用来自某个类或对象的方法作为参数,Lambda表达式则提供了一种无须定义新方法即可传递行为的方式。 9. **异常处理**: - 方法签名中可以包含一个或多个异常类型,表示该方法可能抛出的异常。调用者必须处理...

    百度AI java SDK工具类

    本文将深入探讨“百度AI java SDK工具类”,这是一个专为Java开发者设计的SDK,旨在帮助他们轻松集成百度AI的各项服务,如语音识别、图像识别、自然语言处理等。 首先,我们需要了解什么是SDK(Software ...

    python argparse模块通过后台传递参数实例

    这个模块在后台传递参数时尤其有用,允许开发者构建复杂的命令行接口,而无需编写大量的解析代码。 在提供的示例中,`cmd.py`文件使用`argparse`来接收和处理命令行参数。`argparse.ArgumentParser()`创建了一个...

    安卓的录像和拍照工具类

    在本篇文章中,我们将深入探讨如何利用这些API来创建一个可以切换前后摄像头、进行录像和拍照的工具类。 首先,我们需要创建一个`CameraUtils`类,它将作为我们处理相机功能的中枢。这个类应该包含初始化相机、切换...

    你必须知道的495个C语言问题

    为什么这些问题如此频繁地出现? 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 5.17 说真的,真有...

    Java方法重载的实例

    这些方法可能有不同的实现,具体取决于我们传递给方法的参数。例如: 1. `feed()`方法:没有参数,表示默认的喂食行为。 2. `feed(int foodType)`:传入一个整型参数,代表不同类型的食物,如1代表狗粮,2代表猫粮...

    WebService中使用自定义类的五种解决方法

    包装类通常包含一个与自定义类类型相同的属性,并使用基本数据类型作为方法的参数和返回值。然后,在服务端和客户端之间,将自定义类的对象转换为包装类对象,再进行序列化和反序列化。 5. **使用WS-I Basic ...

Global site tag (gtag.js) - Google Analytics