Math.random()
производит различное (случайное) значение каждый раз, когда вы вызываете его.Если вы хотите получать один и тот же результат каждый раз, когда вызывается generateToken()
(для одного экземпляра токена), вам нужно сохранить полученное случайное значение (скажем, при первом вызове generateToken()
в поле в токене).class.
По той же причине вам также нужно вызвать generateToken()
для того же экземпляра Token
. Для этого вам нужно сохранить ссылку на ваш экземпляр Token
на него с помощьюCallToken
класс, а не создавать его каждый раз.
например:
class Token {
private Double value = null;
public double generateToken() {
if (value == null) {
// value is null first time we call this. We generate our random value and store it in the field.
value = Math.random();
}
// Every time we call this, we return the same value
return value;
}
}
class CallToken {
private Token token;
// CallToken needs to know what token to call- we need to supply it with a reference.
public CallToken(Token token) {
this.token = token;
}
public double callGeneretedToken(){
return token.generateToken();
}
}
public class TestToken {
public static void main((String[] args) {
// We first create the Token, then call it, then pass the reference to it to CallToken, so it can call it too, in callGeneretedToken()
Token token = new Token();
System.out.println(token.generateToken());
CallToken callToken=new CallToken(token);
System.out.println(callToken.callGeneretedToken());
}
}
РЕДАКТИРОВАТЬ: + некоторые уточнения