从Java中的另一个类访问UUID

时间:2012-09-26 13:08:58

标签: java

以下是该方案: 我在一个类中生成随机数据,并将其用作同一类中的方法中的参数。 如何在另一个类中使用完全相同的值?

以下是我的课程的简化版本:

public class A {
    @Test
    public void aMethod() {     
        RandomStringUUID ruuid = new RandomStringUUID();
        }
}

然后:

public class B { 
        @Test
    public void bMethod() {
        // Want to use ruuid , without instantiating RandomStringUUID 
                // as i dont want new values, i want the one from class A
        }
}

4 个答案:

答案 0 :(得分:4)

使用静态方法:

public class A {

     private final static RandomStringUUID ruuid = new RandomStringUUID();

     public final static RandomStringUUID getRuuid() {
         return ruuid;
     }

     @Test
     public void aMethod() {     
         RandomStringUUID ruuid = getRuuid();
     }
}

public class B { 
    @Test
    public void bMethod() {
         RandomStringUUID ruuid = A.getRuuid();
    }
}

答案 1 :(得分:2)

使您的变量成为A类中的公共静态变量

public static RandomStringUUID RUUID = new RandomStringUUID();

在击败之后我进入投票计数

private RandomStringUUID uuid;

private createUuid() {
    uuid = new RandomStringUUID();  //Or any other way you create it
}

public static RandomStringUUID getRuuidForOtherClassesToCheck() {
    return ruuid;
}

OP的部分信息不足以推断它的设计规则,或仅仅是关于如何从类到类获取变量的简单JAVA问题。 :d

答案 2 :(得分:0)

要么A给B的值

public class B {  
    @Test 
    public void bMethod(RandomStringUUID ruuid) { 
    // Want to use ruuid , without instantiating RandomStringUUID  
            // as i dont want new values, i want the one from class A 
    } 
} 

或让A让它可供B访问,正如@sics所说

答案 3 :(得分:0)

我们有时测试使用辅助类。这可能是您(测试)案例的解决方案。因此A不会为B提供值,但两者都会从第三个类中获取相同的对象:

public class TestHelper {

  private final static RandomStringUUID UUID = new RandomStringUUID();

  public static RandomStringUUID getDummyRandomStringUUID() {
     return UUID;
  }
}

public class A {
  @Test
  public void aMethod() {     
    RandomStringUUID ruuid = TestHelper.getDummyRandomStringUUID();
  }
}

(与B相同)

测试仍然存在问题,因为每个测试运行使用不同的UUID值,因此测试不可重现。最好定义一个用于每次测试运行的静态UUID。

相关问题