关于接口和类的问题。

snowrain_2008 2010-01-27 11:12:52
假如一个项目有若干个类。要用到很多final的变量。请问这时候写一个接口让所有的类来实现和单独写一个类在里面全部定义final的变量相比,哪个占用的资源少呢??为什么?
...全文
147 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bayougeng 2010-01-30
  • 打赏
  • 举报
回复
不是你想的那样,把static final变量放在一个接口里,也是很普遍的做法。
lixkyx 2010-01-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bayougeng 的回复:]
关键看你逻辑怎么分了。
如果确实是应该放在一起的东西,放接口里也无不可。
楼上有位仁兄说要继承接口才能用,是错误的。
接口里的变量都是public static final的,不实现接口一样可以用。
调用的时候,应该是:InterfaceName.value。
而不是:someInstace.value。
[/Quote]

这样做的话,和定义成一个类的静态成员有何区别呢?

一定要使用接口的静态成员,有什么优势呢?
为什么Java的标准类中常见的方法是使用类的静态成员而不是使用接口的呢?肯定有其道理的。
bayougeng 2010-01-27
  • 打赏
  • 举报
回复
关键看你逻辑怎么分了。
如果确实是应该放在一起的东西,放接口里也无不可。
楼上有位仁兄说要继承接口才能用,是错误的。
接口里的变量都是public static final的,不实现接口一样可以用。
调用的时候,应该是:InterfaceName.value。
而不是:someInstace.value。
shaiz0530 2010-01-27
  • 打赏
  • 举报
回复
感觉也是
snowrain_2008 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lixkyx 的回复:]
引用楼主 snowrain_2008 的回复:
假如一个项目有若干个类。要用到很多final的变量。请问这时候写一个接口让所有的类来实现和单独写一个类在里面全部定义final的变量相比,哪个占用的资源少呢??为什么?


当然是后者。
学过Java语言的人,应当有印象,Java的标准类里面绝大部分类就有大量的静态属性(成员变量),需要的用时候,任何其他类的方法里都可以使用标准类名.成员名的方式来访问。这是最简单、逻辑最清晰的方案。恰恰就是解决楼主要做的事情的方法。

相反,使用接口变量而要其他所有类都实现的方案,显然太繁琐了,而且容易漏掉导致程序出错。
[/Quote]


谢谢这位仁兄。正是我想要的答案。不过还是想等等看看其他人的看法。呵呵
lixkyx 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 snowrain_2008 的回复:]
假如一个项目有若干个类。要用到很多final的变量。请问这时候写一个接口让所有的类来实现和单独写一个类在里面全部定义final的变量相比,哪个占用的资源少呢??为什么?
[/Quote]

当然是后者。
学过Java语言的人,应当有印象,Java的标准类里面绝大部分类就有大量的静态属性(成员变量),需要的用时候,任何其他类的方法里都可以使用标准类名.成员名的方式来访问。这是最简单、逻辑最清晰的方案。恰恰就是解决楼主要做的事情的方法。

相反,使用接口变量而要其他所有类都实现的方案,显然太繁琐了,而且容易漏掉导致程序出错。
xlxyeyu 2010-01-27
  • 打赏
  • 举报
回复
不晓得。但不管怎么说共通的肯定写在接口里,自己独有的那最好就自己实现去
phyerbarte 2010-01-27
  • 打赏
  • 举报
回复
final了再static就能唯一了,LZ说的资源不知道是否是指一个对象实例。
pjw100 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bayougeng 的回复:]
关键看你逻辑怎么分了。
如果确实是应该放在一起的东西,放接口里也无不可。
楼上有位仁兄说要继承接口才能用,是错误的。
接口里的变量都是public static final的,不实现接口一样可以用。
调用的时候,应该是:InterfaceName.value。
而不是:someInstace.value。
[/Quote]
同意,写接口也不一定要来继承,接口只是定义了一种标准和规范,看你怎么用了。
3楼的答案不敢苟同。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧