为了什么目的,我们想要在同一个类的主类中创建一个类的实例?
问题描述:
我碰到这样一个例子,并有困难,了解它的实际工作用途:为了什么目的,我们想要在同一个类的主类中创建一个类的实例?
class YieldDemo extends Thread
{
static boolean finished = false;
static int sum = 0;
public static void main (String [] args)
{
new YieldDemo().start();
for (int i = 1; i <= 50000; i++)
{
sum++;
if (args.length == 0)
Thread.yield();
}
finished = true;
}
public void run()
{
while (!finished)
System.out.println ("sum = " + sum);
}
}
我从来没有见过这种实现的 - 为什么启动内部同一类对象,而不是一个新的类外面班?有什么特别的原因吗?
答
其实你是类对象本身的outside
。 main method
是一个静态方法,因此它不依赖任何对象实例。
您也可以将main method
移动到任何其他java file
。一般来说它也可以工作。但是,您需要在某个文件中放入static
方法。因为每个java file
都需要成为一个类,所以您可以将该方法放在它工作的类中。例如,java中的Math
类是纯粹的实用程序类,它没有non-static
方法。
但是,如果你创建了这样的事情:
public final class Value {
private final int mValue;
public Value(int value) {
mValue = value;
}
public int getValue() {
return mValue;
}
public Value increase() {
return new Value(mValue + 1);
}
}
实际上,它可以明智的,如果你想Value
为不可变的(不改变其内在价值)。因此,调用increase()
不会增加值本身,但创建此对象的新实例,并增加值。
不要认为有任何特定的原因,只是少一个例子的代码。 – Divers
我有这么多的代码问题......(实际上,只有3个主要的问题:对可变共享变量的非同步访问;扩展'Thread'而不是实现'Runnable';一个非常繁忙的循环)。 –
@AndyTurner - 它不是我的:) – Nimrod