0

我想在泛型类中生成随机 id 号。用户应该能够从大多数 Number 实现中进行选择。在从 Long 转换为 Byte 的情况下,我的方法是否安全?我不知道在这样的沮丧中会发生什么。它会产生什么数字?它会找到均匀分布的数字吗?

@SuppressWarnings("unchecked")    
public class Test<I extends Number>
    {
       SecureRandom random  = new SecureRandom();
       I id = (I) random.nextLong();
       while(Test.has(id))
       {
          id = (I) random.nextLong();
       }
    }
4

2 回答 2

1

JavaNumber类并不是真正为这种泛型类使用而设计的。你不能像你想做的那样施放;Java 不可能知道您要完成的工作(尤其是在类型擦除之后)。没有自动装箱,例如 if Iis AtomicInteger,BigDecimal等(并不是说转换首先是调用自动装箱的方式)。

我建议您重新设计您的应用程序,使其不依赖于您提议的类这样的野兽。它只是行不通。

于 2013-05-07T17:54:16.630 回答
0

如果您的目标只是获取唯一 ID,请尝试链接中给出的方法,(方式 2 与您的方法类似)

http://www.javapractices.com/topic/TopicAction.do?Id=56

于 2013-05-07T17:58:42.203 回答