Java 为什么在参数内创建对象而不命名对象是可能的?
我创建了一个维度和一个点对象,但我不需要命名这两个对象,也不需要在方法调用的参数中调用它的构造函数。我能解释一下为什么这是可能的吗?我已经太习惯于给我的对象命名了,我需要解释我的问题Java 为什么在参数内创建对象而不命名对象是可能的?,java,object,constructor,arguments,Java,Object,Constructor,Arguments,我创建了一个维度和一个点对象,但我不需要命名这两个对象,也不需要在方法调用的参数中调用它的构造函数。我能解释一下为什么这是可能的吗?我已经太习惯于给我的对象命名了,我需要解释我的问题 import java.awt.Dimension; import java.awt.Point; import javax.swing.JFrame; public class GameFrame extends JFrame { public GameFrame(
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JFrame;
public class GameFrame extends JFrame {
public GameFrame()
{
// call this method to the GameFrame object
// if you do not call this method the JFrame subclass will not actually close
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// set size to an appropriate size
// create a dimension object
setSize(new Dimension(600,600));
// upon creating the object set the location of the frame to the center of the screen
setLocation(new Point (500,300));
// prevent the user from resizing the GameFrame object
setResizable(false);
}
}
变量
或标识符
,只是指向对象在内存中占用的空间。在java中,对象通过引用传递给方法。因此,如果在方法调用中创建新对象,该方法将访问存储在内存中的对象,因为您提供了对该对象位置的引用。方法完成后的后续操作将无法访问该对象,因为您没有将引用存储在命名变量中。a变量或标识符仅指向该对象在内存中占用的空间。在java中,对象通过引用传递给方法。因此,如果在方法调用中创建新对象,该方法将访问存储在内存中的对象,因为您提供了对该对象位置的引用。方法完成后的后续操作将无法访问对象,因为您没有将引用存储在命名变量中。您没有使用名称引用对象(只是将实例传递给方法)。如果引用该对象,则通过该引用可以在指定的scop中对该对象进一步执行操作
如果您认为不需要在指定的范围内对该对象执行任何进一步的操作,那么您可以简单地创建一个对象,而无需引用。您没有引用具有名称的对象(只是将实例传递给方法)。如果引用该对象,则通过该引用可以在指定的scop中对该对象进一步执行操作
如果您认为不需要在指定范围内对该对象执行任何进一步的操作,那么您可以简单地创建一个没有引用的对象。这是一个称为匿名类的功能,您并不真正关心对象的引用,但真正关心的是对象的功能/行为。您将在函数式编程中看到更多这一点
有关此功能的更多信息是这是一个名为匿名类的功能,您并不真正关心对象的引用,但真正关心的是对象的功能/行为。您将在函数式编程中看到更多这一点
有关此功能的详细信息,请在编写时参阅
setSize(new Dimension(600,600));
实际上,在创建对象并将其传递给方法时,您正在保存维度对象的引用
如果您不需要将对象进一步单独用于任何计算,则建议您使用此方法
setSize(new Dimension(600,600));
实际上,在创建对象并将其传递给方法时,您正在保存维度对象的引用
如果您不需要进一步单独使用对象进行任何计算,则建议您使用此方法。基本上,您所做的工作相当于:
Dimension dimension = new Dimension(600,600);
setSize(dimension);
现在,即使它是完全相同的东西,dimension
只是新对象的标识符。如果您不需要在除新对象之外的任何其他地方使用它,这只是浪费空间
setSize
方法将新对象传递给超类的一个变量JFrame
,该变量保存您的对象,而您的类GameFrame
将通过其超类访问该对象。在Java中,每个对象都需要至少有一个对它的引用,否则它将被视为垃圾并被删除
此外,即使为维度
指定了名称,在执行四行代码后,变量也会超出范围并被删除
希望我能帮上忙:)基本上你所做的等同于:
Dimension dimension = new Dimension(600,600);
setSize(dimension);
现在,即使它是完全相同的东西,dimension
只是新对象的标识符。如果您不需要在除新对象之外的任何其他地方使用它,这只是浪费空间
setSize
方法将新对象传递给超类的一个变量JFrame
,该变量保存您的对象,而您的类GameFrame
将通过其超类访问该对象。在Java中,每个对象都需要至少有一个对它的引用,否则它将被视为垃圾并被删除
此外,即使为维度
指定了名称,在执行四行代码后,变量也会超出范围并被删除
希望我能帮忙:)对象没有名称。您考虑的是变量:-p此处不需要变量,因为您需要维护对位置和大小的引用。对象没有名称。您考虑的是变量:-p此处不需要变量,因为您需要维护对位置和大小的引用。这与匿名类无关。如果是,请您解释一下这些setSize(新维度(600600))是什么?请参阅其他投票赞成的答案。匿名类将是setSize(新维度(600600){});注意后面的{},您可以在其中重写方法等。是的,正如Tom所说,您通常使用匿名类当场创建一个类或实现一个接口,但它必须仅在该现场需要。通常使用它们的方法是ActionListeners。这与匿名类无关。如果是,请您解释一下这些setSize(新维度(600600))是什么?请参阅其他投票赞成的答案。匿名类将是setSize(新维度(600600){});注意后面的{},您可以在其中重写方法等。是的,正如Tom所说,您通常使用匿名类当场创建一个类或实现一个接口,但只需要在该类上使用它