首页 新闻 会员 周边 捐助

static 静态方法在哪种情况下使用比较好

0
悬赏园豆:10 [已解决问题] 解决于 2015-04-25 09:19

请大神给几个静态方法的应用场景,会写会用但是不知道什么时候用,原理我也懂得不少了,不用多谢那么多原理。

代码小兵的成长的主页 代码小兵的成长 | 菜鸟二级 | 园豆:303
提问于:2015-04-23 09:15
< >
分享
最佳答案
0

工具库方法。不需要实例化的方法。与具体业务无关,执行比较频繁,用的地方多的方法。

收获园豆:10
幻天芒 | 高人七级 |园豆:37207 | 2015-04-23 10:51

得嘞,还是您老这个号

代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-04-23 11:13
其他回答(7)
0

其实就是两个字:懒。

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-04-23 09:34

应用实例呢,大叔,给点实例啊啊

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-04-23 11:09

@代码小兵的成长: 不关心实例的就用Static。

简单说, 你只是想要有金子,至于张三还是李四帮你淘的,你压根不在乎。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2015-04-23 11:48

@爱编程的大叔: 

唉,你的性格,让我蛋疼,不过哥喜欢你,哈哈

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-04-23 17:24
0

其实如果你是简单 网站不考虑 扩展性 那么 直接 就 静态方法 完全可以。 但是考虑已扩展这种 显然不试用了 。

效率上 静态方法  和实例化对象 这个可以忽略不计。

魔方菜鸟 | 园豆:29 (初学一级) | 2015-04-23 09:58

应用场景、场景场景啊啊啊啊啊啊 啊

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-04-23 11:13
0

不需要实例的时候,或者说方法的调用不依赖实例的时候。比如说Math包下面的方法,他不需要创建对象,所有人调用都一样 。

王翊 | 园豆:3 (初学一级) | 2015-04-23 09:59
0

在你需要的时候用....

我们之前的技术主管,告诉我说.用静态方法可以解决并发问题.我差点喷他脸上

吴瑞祥 | 园豆:29449 (高人七级) | 2015-04-23 10:03

有的博客确实这样说的,然后下面一堆人喷,不过,我看过一篇文章,说是静态方法在IL中只有一个方法,非静态方法无论创建几个,只要不销毁,也是在IL中只有公共的一个。

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-04-23 11:11

@代码小兵的成长: 这个是函数的事.每个函数代码肯定是只有一份的.只是函数指针的分配方式不同.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2015-04-23 11:14
0

不关心实例状态的方法都可以static

dudu | 园豆:29732 (高人七级) | 2015-04-23 11:22
0

1.在进行单元测试的时候,用static来在首先加载properties文件

2.初始化缓存。

static{

     for(CacheTypeData tyep : CacheTypeData.values())

     {

       cache.put(type,new HashMap<String,List<Object[]>>));

      }

}

其中CacheTypeData是一个枚举类

风又奈何 | 园豆:202 (菜鸟二级) | 2015-04-23 15:44
0

如果一个方法 MethodA 属于类 ClassA,但又不需要实例化 ClassA 就可以调用,那么 MethodA 就应该设计为 static。

举例:

SqlConnection.ClearAllPools();

Launcher | 园豆:45050 (高人七级) | 2015-04-23 17:01

@爱编程的大叔: 

总算有大神支持我的数据库用static的说法了

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-04-23 17:26

@代码小兵的成长: 还有 C# 中的扩展方法,必须是静态的(在这里不是好不好的问题,而是只能这么用)。因为在 C# 中,一个方法必须属于某个类,因此在做设计时,多多少少就会碰到类似的类设计问题。

 

如果认真的分析下 SqlConnection.ClearAllPools() 的设计,你会发现一些基本的设计原则。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-04-23 17:45

@代码小兵的成长: 你确定?好吧,所有的错误你必须经历一次,才能发现别人为啥说好痛。

我没说不能用,我也经常用啊,只是你得知道哪儿会痛。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2015-04-24 12:33

@爱编程的大叔: 别批评我,我没说,不是我说的大叔

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-04-24 14:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册