`

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

阅读更多

昨天花时间为别人写了个工具类,作用就是生成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

相关推荐

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

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

    C语言FAQ 常见问题列表

    为什么这些问题如此经常地出现? o 6.12 我很困惑。我就是不能理解这些空指针一类的东西。 o 6.13 考虑到有关空指针的所有这些困惑, 难道把要求它们内部表达都必须为 0 不是更简单吗? o 6.14 说真的, 真有机器用...

    1000道 互联网Java架构师面试题.pdf和JAVA核心知识整理.zip

    18、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里? 19、 一对一、一对多的关联查询 ? 20、MyBatis 实现一对一有几种方式?具体怎么操作的? 21、MyBatis 实现一对多有几种方式,怎么操作的?...

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

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

    java教学资料

    要求同学们在开发环境中,创建一个以姓名和学号命名的工程名称,如zhangsan04010325; 在工程下的src目录下创建15个类包,如ex1,ex2…ex15; 请将每次实验分别保存在工程中的不同类包中,方便实验整理 编写一个Java...

    net学习笔记及其他代码应用

    Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)是抽象类的变体。在接口中,所有方法...

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

    老资源。 目录 1 声明和初始化1 1.1 我如何决定使用那种整数类型? . . . .... .... .... ....1.5 关键字auto 到底有什么用途? ....为什么这些问题如此经常地 出现? . . . . . . . . . . . . . . . . . . . ...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    消息是以参数的形式传递给某方法的。一个消息通常由三部分组成: 1. 消息传送到对象的名称。 2. 要执行的方法的名称。 3. 方法需要的任意参数。 2.2.4 类 类是一个蓝图或样板,定义了某种类型的所有对象的变量...

    c#学习笔记.txt

    如果没有ref,out则默认为值传递,虽然可以在方法中修改这个参数的值,但是修改后的值不会还会到调用该方法的程序中. params :params 关键字可以指定在参数数目可变处采用参数的方法参数 ref :引用传递 out : 7, ...

    《Java-面向对象程序设计基础》章:Java语法基础(与“方法”有关文档共49张).pptx

    * 在 Java 中进行赋值操作或函数调用中传递参数时,遵循值传递(Pass By Value)的原则,即传递的永远是参数的值。 * 关键字 this 代表方法的调用者,即本次调用了该方法的对象。 标识符 * 在 Java 语言中,标识符...

    MATLAB大作业1

    熟悉 MATLAB 中深度学习工具箱的使用方法是本次课程设计的关键要求之一。 2. 序列数据神经网络 序列数据神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。RNN 能够处理序列变化的数据...

    电子学会青少年你编程等级考试真题Python四级编程真题2020.12月

    Python函数的参数传递有两种方式,一种是位置参数,另一种是关键字参数。位置参数是根据参数的位置来传递的,而关键字参数是根据参数的名称来传递的。 9. Python变量的作用域 Python变量的作用域是指变量可以被...

    Java高级面试题及答案整理(2021年Java面试题答案大汇总)

    1.为什么wait和notify方法要在同步块中调用? 答案:Java API强制要求这样做,如果你不这么做,你的代码会抛出IllegalMonitorStateException异常。还有一个原因是为了避免wait和notify之间产生竞态条件。 五、Java...

    [水位控制系统] 自控原理课程设计水位控制系统

    经典控制理论以传递函数为数学工具研究单输入、单输出的自动控制系统的分析和设计方法。主要研究方法有时域分析法、根轨迹法和频率特性法。   现代控制理论的产生:随着科学技术的突飞猛进,特别是空间技术和各类...

    servlet temple

    每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 ...

    MATLAB应用技术第四章MATLAB与交直流调速系统仿真.ppt

    "MATLAB应用技术第四章MATLAB与...本章节为读者提供了控制系统的技术指标与要求、自动控制和自动控制系统、直流电动机模型、直流电动机参数计算、MATLAB实现等重要知识点,旨在帮助读者更好地理解和应用MATLAB技术。

    软件工程-理论与实践(许家珆)习题答案

    答:主要的软件开发方法有:结构化开发方法、Jackson(JSP、JSD)方法、原型化开发方 法、维也纳开发方法(VDM)和面向对象的开发方法。 6. 软件生命期各阶段的任务是什么? 答:软件生命期瀑布模型分为六个阶段: ...

    c语言编写单片机技巧

    平时可以多看看相关的电子技术杂志网站,看看别人的开发经验,硬件设计方案以及他人的软件设计经验。有可能的话,还可以参加一些电子设计大赛,借此机会2--3个人合作做一个完整系统,会更有帮助。到了大四毕业设计...

Global site tag (gtag.js) - Google Analytics