如何在其他方法中访问在一个方法中创建的对象?
我想这样做,这样我每次创建新方法时都不会一遍又一遍地创建相同的对象,并希望在其中使用该对象。这是我正在上课的课程:
import BrandPhone.*;
public class Test {
public static void main(String[] args) {
// Creating the object.
Phone myPhone = new Phone();
//Creating another object.
Color color = myPhone.getColor();
}
}
如果我尝试使用另一种新方法(例如下面显示的方法color
)访问对象initialise
,我会收到error
说“无法找到符号”:
import BrandPhone.*;
public class Test {
public static void main(String[] args) {
// Creating the object.
Phone myPhone = new Phone();
//Creating another object.
Color color = myPhone.getColor();
}
public void initialise() {
color.setNum(120); // This gives an error
}
}
为了尝试解决这个问题,我决定尝试在类的开头声明对象名称作为类变量,在任何方法之外。这会产生错误,说“非静态变量('对象名'')不能是来自静态上下文的引用”。
import BrandPhone.*;
public class Test {
Phone myPhone;
Color color;
public static void main(String[] args) {
// Creating the object.
myPhone = new Phone(); // Produces error.
//Creating another object.
color = myPhone.getColor(); // Produces error.
}
public void initialise() {
color.setNum(120);
}
}
为了尝试解决此问题,我更改了方法,以便代替public static void main(String[] args) {...}
而不是public void newObjects() {...}
。当我尝试运行它时会产生另一个错误,说“Class”Assignment.Test“没有主方法。”
我是Java的新手,所以我不确定如何解决这个问题 - 所有类都以main
的形式拥有public static void main(String[] args) {...}
方法}?如果是这样,我是否可以从主方法开始并将其留空,然后继续创建新方法?
答案 0 :(得分:0)
我不完全确定你要做什么。但是,如果在声明和初始化颜色后执行此操作,color.setNum(120)
应该可以正常工作。
Color color = myPhone.getColor();
color.setNum(120);
答案 1 :(得分:0)
您正在尝试访问范围之外的颜色变量,您可以将其直接传递给方法(如下所示),将其设置为静态变量或只在main()方法中调用setNum。
公共课测试{
public static void main(String[] args) {
// Creating the object.
Phone myPhone = new Phone();
//Creating another object.
Color color = myPhone.getColor();
initialise(color);
}
public static void initialise(Color colorToSet) {
colorToSet.setNum(120);
}
}
答案 2 :(得分:0)
您还应提供Phone和Color类文件,以提供项目的封装外观。但是,根据你的主要;以下将有效。如果你从main()进行静态调用,那么另一个方法也应该是静态的,如果也在Test类中。实例化您的对象Color,然后调用setter方法调用方法; color.setNum(120);
public static void main(String[] args) {
// Creating the object.
Phone myPhone = new Phone();
//Creating another object.
Color color = myPhone.getColor();
color.setNum(120);
}