我想在泛型类中生成随机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();
}
}
答案 0 :(得分:1)
Java Number
类实际上并不是为这种泛型类使用而设计的。你不能像你想要的那样施展;没有办法(特别是在type erasure之后)Java可以知道你想要完成什么。例如,如果I
是AtomicInteger
,BigDecimal
等,则没有自动装箱(不是说铸造是首先调用自动装箱的方式)。
我建议你重新设计你的应用程序,这样就不会像你提出的类那样依赖这样的野兽了。它不会起作用。
答案 1 :(得分:0)
如果您的目标只是获取唯一ID,请尝试链接中给出的方法,(方式2与您的方法类似)