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

小议方法参数的可见性

阅读更多
大家说到方法的可见性时,说得都是方法前面的修饰符(public,protected,private),可是方法的参数可见性却一直没有提及。
1:最大可见性的参数类型Object,这个类型可以允许传入任何类型的参数,一般都用于方法内部通过反射来调取参数属性及方法的。
2:次之可见性为Collection类型的,可以传入的对象很多都是一个集合,通过转型或者反射操作,原理和Object基本上差不多。
3:Interface操作。传入一个类型的接口,这样可以通过接口操作参数的各种方法。
4:具体类型。只能传入一种类型或者其子类。有些类似Interface(如果存在子类的话)。
这几种可见性,也要根据情况使用,要尽量在可预见的情况下,使用最小的可见范围。意思就是能使用多小范围就是用多小范围。当然了,自己会预见今后会扩展,就不能使用具体的类,需要使用Interface类型的,或者类似的(即父类)作为参数类型。
范围使用的比较大的话,那么不利于编译检查,也不是强类型语言的有点所在。试想所有的参数都是Object,那么将是多么可怕的事情。
分享到:
评论
5 楼 sinokaka 2007-01-21  
引用

抛出异常的爱     3 天前

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

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



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


呵呵,这两天没上来,是我误解了:)
4 楼 LucasLee 2007-01-19  
楼主混淆了可见性和类型接口的概念。
当然这里有一点相似,不过private,public这些是控制能否访问,而参数的"可见性"是控制的类型接口。

Object,Collection,等等,都是一个问题,应该尽量使用上层接口来使用对象,从而可以使用多形性保证程序的弹性。
例如对使用ArrayList类型的,是否可以上溯造型到List或者Collection来定义参数?不过要注意,有时候会失去方便性和一些特性,比如Collection已经不能像样List一样直接以序号来访问元素了。
3 楼 抛出异常的爱 2007-01-19  
sinokaka 写道
不知道意指什么?
比如这样,你需要保存一个User的时候,那么你的方法是
SaveUser(ParamType user) {
    doSomeThing();
    ......
    session .save(Object);
}

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

我想说的是用object 只见过这个方法
2 楼 sinokaka 2007-01-19  
不知道意指什么?
比如这样,你需要保存一个User的时候,那么你的方法是
SaveUser(ParamType user) {
    doSomeThing();
    ......
    session .save(Object);
}

那么你的ParamType类型是什么呢?User?Object?
1 楼 抛出异常的爱 2007-01-19  
session .save(Object);

相关推荐

Global site tag (gtag.js) - Google Analytics