我发现我同事的java代码中所有class的方法都是static,他说这样调用就很方便(因为不用new一个对象了,直接class.方法调用),请问他这样

wtjd 2006-11-21 11:05:47
我发现我同事的java代码中所有class的方法都是static,他说这样调用就很方便(因为不用new一个对象了,直接class.方法调用),请问他这样做有没有什么不好的?
...全文
3652 36 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfront 2006-11-26
  • 打赏
  • 举报
回复
to: nearsun(蓝冰)
同感,哈哈.
static在某些方面的确很方便,比如HTMLEncoding之类的Util类.但是所有的类都是static的话就要怀疑一下程序员的OO思想了.
tyzxc2004 2006-11-24
  • 打赏
  • 举报
回复
catch (Exception e) {
// TODO 自动生成 catch 块
success = false;
System.out.println(e.toString());
}
finally{
.................

报戳代码是重这儿开始的
tyzxc2004 2006-11-24
  • 打赏
  • 举报
回复
package uu;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;



public class ChooseMyFiles {
protected String[][] data; /*用于存放从文件中读出的数据*/
private int row; //protected;
private int col;
private String[] colName; /*用于存放列名称*/

public int getRow(){
return this.row;
}

public String[] getColName(){
return colName;
}

public int getCol(){
return this.col;
}
public String[][] data(){
return this.data;

}

/*
*
* <p>打开文件选择器,读入文件内容到数组data中,让这个数组来保存数据</p>
* <p>为了确定数组的维数,建立了一个集合,先保存</p>
* @return boolean 如果一切操作成功,返回true,否则false
*
* */
public boolean dealFile(){
boolean success = false;
BufferedReader bufferR = null;
FileReader fileR = null;
/*创建一个集合List用于存放每行的数据*/
ArrayList list = new ArrayList();
JFileChooser chooser = new JFileChooser();
FileFilter filter = new MyFileFilter();
chooser.addChoosableFileFilter(filter);
int returnValue = chooser.showOpenDialog(null); //showOpenDialog() 弹出一个 "Open File" 文件选择器对话框。它的返回值是int形
File file1 = chooser.getSelectedFile(); //getSelectedFile()是返回选中的文件
/*如果确认是打开,而不是取消*/
if(returnValue==JFileChooser.OPEN_DIALOG){

fileR = new FileReader(file1);
bufferR = new BufferedReader(fileR); //读取文件
String person = bufferR.readLine();
if(person!=null){
colName = person.split("//s+");
col = colName.length;
}
else{

success = false;
return success;
}
person = bufferR.readLine();

while(person!=null){
list.add(person);
person = bufferR.readLine();
}
row = list.size();
Iterator it = list.iterator();
data = new String[row][col]; //创建了一个二维数组data对象.并在其中保存了元素row,col
int i=0;
while(it.hasNext()){
String[] temp = (String[])it.next(); //
for(int j = 0; j < temp.length; j++){
data[i][j] = temp[j];
}
i++;
}

return success;
}
catch (Exception e) {
// TODO 自动生成 catch 块
success = false;
System.out.println(e.toString());
}
finally{
try {
bufferR.close();
fileR.close();
} catch (IOException e) {
// TODO 自动生成 catch 块
success = false;
System.out.println(e.toString());
}

}

return success;
}
/*方法dealFile结束*/
}
tyzxc2004 2006-11-24
  • 打赏
  • 举报
回复
请上面的高手给我看一下这代码?
为什么我写的这个程序抛不出异常乃?
自然80 2006-11-24
  • 打赏
  • 举报
回复
当要求你把这样的代码转移到spring的时候,就知道static的罪恶了^_^
禽兽v5 2006-11-24
  • 打赏
  • 举报
回复
用了很多static的估计是c时代的程序员,喜欢直接调用函数。太多static在OO中没什么好处,一般来说,我只在通用方法、工厂方法、配置方法用static,其他的不用。
wtjd 2006-11-24
  • 打赏
  • 举报
回复
糊涂了,
wtjd 2006-11-24
  • 打赏
  • 举报
回复
那到底会有什么影响啊?
怎么众说纷纭啊,
sonyejin 2006-11-23
  • 打赏
  • 举报
回复
性能是一方面,但我想不是主要原因,想楼上有人说的滥用static导致服务器崩溃的情况应该不多,我觉得主要是将类中的方法定义成static,失去一些面向对象的优势,比如多态等性质
GODProbe 2006-11-23
  • 打赏
  • 举报
回复
还真有人这么干啊,呵呵。
如果引用了静态变量成员,那么占用内存不说,也不是线程安全的。
hbwhwang 2006-11-23
  • 打赏
  • 举报
回复
当然优先考虑用static方法,这没有任何问题!
tfp 2006-11-23
  • 打赏
  • 举报
回复

这个只好用在固定不变的地方,
iambic 2006-11-23
  • 打赏
  • 举报
回复
static本身不会导致什么问题,但是滥用static的人很可能同时犯了其它错误。
iamsangster 2006-11-23
  • 打赏
  • 举报
回复
这是程序有问题,不是static 的问题,很有可能是计算太多造成的,或者是死循环


性能影响挺大的
我们公司有一同事写了几百行的代码
全是static的导致服务器刮掉
wtjd 2006-11-22
  • 打赏
  • 举报
回复
就是每个方法前面都是public static ...
luyuan123456789 2006-11-22
  • 打赏
  • 举报
回复
这个要看情况定了
ChDw 2006-11-22
  • 打赏
  • 举报
回复
不能一概而论的,关键是他写的方法之间是否存在必然的联系、有没有使用到类成员变量等

像Utility这种类中,很多方法的确应该写成是static,可以减少不必要的创建对象(事实上我通过都会通过private构造函数来禁止外部new Utility()
jackie_604898140 2006-11-22
  • 打赏
  • 举报
回复
肯定写的程序性能巨低,该用的时候用无可厚非
iambic 2006-11-22
  • 打赏
  • 举报
回复
贴一点来看看吧,然后再做评价。
wuhailiang1983 2006-11-22
  • 打赏
  • 举报
回复
这是在拿着面向对象的语言当面向过程的语言用,至于性能到不一定有那么大影响
加载更多回复(16)

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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