为每个实例schenanigans避免使用新的Random

时间:2010-11-06 17:46:02

标签: java constructor

试图让这些代码落地:


    Random random = new Random();

public Particle(int mouseInputX, int mouseInputY, int[] RGBBounds){
    this(mouseInputX, mouseInputY, 6, 12+ random.nextInt(10),RGBBounds);

但netbeans支持在调用超类构造函数之前我无法引用随机数。所以我尝试了这个:

public Particle(int mouseInputX, int mouseInputY, int[] RGBBounds){
    this(mouseInputX, mouseInputY, 6, 12+ random.nextInt(10),RGBBounds);

哪个有效,但我不想为每个粒子对象创建一个新的Random对象(性能已经是一个问题)。怎么办?

2 个答案:

答案 0 :(得分:2)

无论哪种方式,您都要为每个实例创建一个新的Random()对象。

如果您不想,可以将其设为static。但考虑线程安全。请查看this article by Jon Skeet(以及下面的评论)

答案 1 :(得分:1)

您可以将其设置为静态并提供静态同步方法来访问它。