RTpublic class JRAnswer {
public static void main(String[] args){
search();
}
protected void search(){
}
}
public static void main(String[] args){
search();
}
protected void search(){
}
}
解决方案 »
- POI操作office
- ArrayList可以被持久化吗
- 急!100分~关于解析.txt文件的问题! 请指教。
- 在Java中,如何监听树的节点的鼠标双击事件?
- 在jsp里怎么插入一个能播放存在web项目里的avi格式的视频的播放器
- 多个JTextField的获取?
- 数据库读不出数据,在线等待,谢谢!!
- 初学Java有些地方不明白,还望哥哥们指教....谢谢各位进来一阅..MM这厢有礼啦~
- 关于Button的基础问题
- java.lang.NoClassDefFoundError帮忙看看,怎么解决?
- 怎么设置SWT中Dialog窗口标题
- 大家在做J2EE项目中用到JAVA多线程的多吗?现在有一个月的空闲时间,想再学点东西,不知道是不是该学点多线程。谢谢!
public static void main(String[] args){
(new JRAnswer()).search();
}
protected void search(){
}
}或改成public class JRAnswer {
public static void main(String[] args){
JRAnswer.search();
}
protected static void search(){
}
}
这里错了
先说一下解决方法:你可以创建JRAnswer的实例去调用这个方法如:new JRAnswer().search();再说一下为什么不可以在静态方法中调用非静态方法:\
在java里面,静态方法、静态变量都是在类加载的时候就会被初始化的,并且需要在类加载的时候进行必要的检查。
当在静态方法里面遇到非静态的实例变量或者方法时,由于类加载时候这些方法和变量并未存在,这样就找不到它们了,
这样就可以导致程序出错。为了避免这种错误,编译器就会先检测是否有这样的调用。这样说不知道你清楚了没?
可改为如下代码:
public class JRAnswer {
public static void main(String[] args){
search();
}
protected static void search(){
}
}
或者
public class JRAnswer {
public static void main(String[] args){
new JRAnswer().search();
}
protected void search(){
}
}
这两种都是正确的。
我当然知道静态方法不能调用非静态方法..可我一直认为main是个例外.可一直还是没找到依据,
看来我真的是错了.
谢谢上面各位.结帖.