没有静态方法.....  给源程序...

解决方案 »

  1.   

    楼主在当前静态方法中引用了非静态方法。静态方法要求引用的变量和方法要求是静态的。
      

  2.   

    静态方法只能调用静态的方法和域
      

  3.   

    楼主在当前静态方法中引用了非静态方法。静态方法要求引用的变量和方法要求是静态的。
      

  4.   

    真的是这样,静态方法调用的方法也只能是静态的方法.
    那为什么只能调用静态方法,使用静态方法的目的又是什么呢?
      

  5.   

    通常static方法的一个普遍是使用类似c中function中使用.这点你可以参看Math类.不过你要注意在多线程的时候static的使用.
    通常这样的工具方法都是跟输入没有关系的,也就是说它们不对输入项进行操作而是根据输入项得到一些值.例如
    我们在编写一个棋类游戏,每次我们从网络中得到的都是棋子的ID而并非名称,但是在更新棋盘的同时我们要生成棋谱,例如"3四兵",而我们需要一个能根据棋子ID得到棋子名称的方法,而这个方法又可能在多个类(不仅是通一个类的多个实)使用,那么就需要编写一个这样的工具,因此我们在ClientUtil类中加入如下方法
    publci class ClientUtil{
        public static String getChessmanName(byte _chessmanId){
            String cName= "";
            switch(_chessmanId){
                case 1: 
                    cName = "兵";
                    break;
                case 2:
                    cName = "卒";
                    break;
                ...... 
           }
        }
    }
    在GamePanel中我们就需要使用该方法
    public class GamePanel{
        public void move(){
             ......
            updateChessManual();
        }
        private void updateChessManual(){
            .......
            String cName = Client.getChessmanName();
            .......
        }
    }
    如果是属性static 的时候我们多用于和final组合作一些常量使用.static方法并非不能用于多线程访问,只要你的方法是安全的,最好的方法仍然是static方法不操作输入项例如下边的方法就是一个不安全的例子public class A{
        public static void modifyNum(int _x,int _y){
            _x += _y;//你已经操作的输入项
        }
    }
    在另一个类中
    public class B{
        int a;
        int b;
        public void doSomeThing(){
            A.modifyNum(this.a,this.b);//你已经错误的使用static
        }
        System.out.println(a);//a在你不知不觉中发生了改变
    }以上使我们使用static的习惯,不能代表static的全部.
      

  6.   

    你调用方法没创建这个对像,这个方法又不是静态的,要不你创建,要不就声名为静态就可以调用了