论坛首页 综合技术论坛

小议方法参数的可见性

浏览 3666 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-19  
大家说到方法的可见性时,说得都是方法前面的修饰符(public,protected,private),可是方法的参数可见性却一直没有提及。
1:最大可见性的参数类型Object,这个类型可以允许传入任何类型的参数,一般都用于方法内部通过反射来调取参数属性及方法的。
2:次之可见性为Collection类型的,可以传入的对象很多都是一个集合,通过转型或者反射操作,原理和Object基本上差不多。
3:Interface操作。传入一个类型的接口,这样可以通过接口操作参数的各种方法。
4:具体类型。只能传入一种类型或者其子类。有些类似Interface(如果存在子类的话)。
这几种可见性,也要根据情况使用,要尽量在可预见的情况下,使用最小的可见范围。意思就是能使用多小范围就是用多小范围。当然了,自己会预见今后会扩展,就不能使用具体的类,需要使用Interface类型的,或者类似的(即父类)作为参数类型。
范围使用的比较大的话,那么不利于编译检查,也不是强类型语言的有点所在。试想所有的参数都是Object,那么将是多么可怕的事情。
   发表时间:2007-01-19  
session .save(Object);
0 请登录后投票
   发表时间:2007-01-19  
不知道意指什么?
比如这样,你需要保存一个User的时候,那么你的方法是
SaveUser(ParamType user) {
    doSomeThing();
    ......
    session .save(Object);
}

那么你的ParamType类型是什么呢?User?Object?
0 请登录后投票
   发表时间:2007-01-19  
sinokaka 写道
不知道意指什么?
比如这样,你需要保存一个User的时候,那么你的方法是
SaveUser(ParamType user) {
    doSomeThing();
    ......
    session .save(Object);
}

那么你的ParamType类型是什么呢?User?Object?

我想说的是用object 只见过这个方法
0 请登录后投票
   发表时间:2007-01-19  
楼主混淆了可见性和类型接口的概念。
当然这里有一点相似,不过private,public这些是控制能否访问,而参数的"可见性"是控制的类型接口。

Object,Collection,等等,都是一个问题,应该尽量使用上层接口来使用对象,从而可以使用多形性保证程序的弹性。
例如对使用ArrayList类型的,是否可以上溯造型到List或者Collection来定义参数?不过要注意,有时候会失去方便性和一些特性,比如Collection已经不能像样List一样直接以序号来访问元素了。
0 请登录后投票
   发表时间:2007-01-21  
引用

抛出异常的爱     3 天前

sinokaka 写道
不知道意指什么?
比如这样,你需要保存一个User的时候,那么你的方法是
SaveUser(ParamType user) {
doSomeThing();
......
session .save(Object);
}

那么你的ParamType类型是什么呢?User?Object?



我想说的是用object 只见过这个方法


呵呵,这两天没上来,是我误解了:)
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics