现在要从多个线程取A中的某个变量c,我的做法是使用static方法取c(因为new A实在不方便),所以我把c定义成了static变量,但是c又是在构造函数里面赋值的,请问这么写好不好?有没有别的好办法?举例:
class A{
   private static String c;   public A(String c1){
           this.c =c1;
                }   public static String getparam(){
           return c;
             }
}
...........线程里面getparam()

解决方案 »

  1.   

    static 是所以程序一个东西,满足你的需求就可以了
      

  2.   

    我觉得没必要用static修饰
    直接 private String c 就可以了
      

  3.   

    这样不好!
        因为你用A.getparam()的时候,因为你没有调用构造函数呀!你的c就是没有被赋值的!所以getparam()得到的返回值是0;
        你可以这样写!
        public static String getparam(String c1){
               return c=c1;
                 }
        调用的时候直接 A.getparam(""); 就ok了!
      

  4.   

    public static class A{
    String c;public A(String c1){
    this.c =c1;
    }public static String getparam(){
    return A.c;
    }
    }
      

  5.   

    private String c
    更好..
      

  6.   

    static 变量可以在构造函数里面赋值吗?static变量不是只能在static函数里面操作的吗?
      

  7.   

    用private String c就行了。
      

  8.   

    那你就用static方法赋值
    public static void setC(String s){
        c = s;
    }
      

  9.   

    private static final String out = "";
      

  10.   

    如果是属于A的最好是声明为final
      

  11.   

    我想大家可能没明白我的意思。我还不能保证做法的正确性,所以问大家对不对。大家有什么更好的办法。
    class B{
       
       A a = new A(c1);
    }class A{
       private String c;
       A(String c1){
         this.c = c1;}   createThread(){
            new D().start();}   notiD(){
         notify();//唤醒线程  
         }
     }class D extends Thread{
             run(){
               while(true){
                wait();
                if(...)//判断条件含方法,取A中的变量c;如果方法满足,则继续下面否则返回while去wait();
               {    }else{continue;}
                                      
       }
     }
    }
    我的意思就是线程D中的方法如何写?
      

  12.   

    这是一个常用的方法,这样做不错.但是,你说的这句话:"(因为new A实在不方便)"
    可能导致你的想法无法实现.因为只有new一个A,这个变量才会有初值.
      

  13.   

    不能的 ,static的变量只要声明就在内存中有数值, int的默认为0,string的魔问为null,所以这个地方你传递的参数是貌似就不对了把
      

  14.   

    使用static的确感觉有问题,所以才征求大家的意见。
      

  15.   

    用不用static关键是看,所有对象是不是共用这个数据,如果共用,也就是和具体对象无关的话,就用static,否则不能用static