如何在方法调用中获取一个变量,并使用它标识java中要设置的几个对象之一
我有一个类可以创建一个对象,它可以创建和管理9个其他对象,我正在尝试编写一个方法,可以从一个对象中获取一个int,然后在另一个对象中设置它 为了做到这一点,我想我必须在方法调用中识别两个对象,我尝试了获取一个字符串,但没有成功如何在方法调用中获取一个变量,并使用它标识java中要设置的几个对象之一,java,object,Java,Object,我有一个类可以创建一个对象,它可以创建和管理9个其他对象,我正在尝试编写一个方法,可以从一个对象中获取一个int,然后在另一个对象中设置它 为了做到这一点,我想我必须在方法调用中识别两个对象,我尝试了获取一个字符串,但没有成功 public void moveNumber(String object1, String object2) { int number = 0; number = object1.getNumber(); object2.setNumber(num
public void moveNumber(String object1, String object2)
{
int number = 0;
number = object1.getNumber();
object2.setNumber(number);
}
有人能告诉我哪里出错了吗?如果要传递两个对象,则必须使用对象类型声明方法,而不是使用
字符串定义方法,如下所示:
// replace Object with the type of object you wish to pass
public void moveNumber(Object object1, Object object2)
{
int number = 0;
number = object1.getNumber();
object2.setNumber(number);
}
如果object和object2是您制作的真实对象,那么只需使用它们即可
public void moveNumber(ObjectType1 object1, ObjectType2 object2)
{
object2.setNumber(object1.getNumber());
}
假设您在object2中有一个setNumber(int i),在object1中有一个getNumber(),我将尝试给您一个关于它应该如何工作的示例:
下面是一节课:
public class MyClass {
private int number;
public MyClass(int number) {
setNumber(number);
}
public void setNumber(int number) {
this.number = number;
}
public int getNumber() {
return number;
}
}
这是您的moveNumber
方法。我设置这个方法static
,以便从static void main()
调用它。如果要从代码中调用它,则不需要将其设置为静态
public static void moveNumber(MyClass object1, MyClass object2)
{
int number = object1.getNumber();
object2.setNumber(number);
}
以下是管理所有这些内容的代码:
public static void Main() {
MyClass obj1 = new MyClass(3);
MyClass obj2 = new MyClass(4);
moveNumber(obj1, obj2);
System.out.println("obj1 number ===> " + obj1.getNumber()); // prints 3
System.out.println("obj2 number ===> " + obj2.getNumber()); // prints 3
}
您可以在此处看到运行的代码:
编辑
当您将对象赋给方法时,可能不知道对象的类。因此,您最好创建一个接口
(在我的示例中,我将此接口称为IMyClass
):
您将MyClass
更改为实现此接口:
public class MyClass implement IMyClass...
然后,在方法中,将参数设置为IMyClass:
public static void moveNumber(IMyClass object1, IMyClass object2)
通过这种方式,您将能够有许多IMyClass
的实现,并传递对象实现IMyClass
,而不必确定它们的实现Class
。
但是,如果要调用getNumber
,则必须确保所操作的对象上存在此方法。如果要执行此操作,则不需要字符串
类型,而是创建自己的类型,如下所示:
public class MyObject() {
private int i;
public int getNumber() {
return i;
}
public void setNumber(int i) {
this.i = i;
}
}
然后创建对象:
MyObject object1 = new MyObject();
MyObject object2 = new MyObject();
并将类型为MyObject
的创建对象传递给public void moveNumber(MyObject object1,myobject2)
你知道你的代码不能工作吗,因为在String
类上没有名为getNumber
的方法?是的,但我不知道在编译时如果没有对象名,我怎么能调用我需要的方法请参见下面我的答案和版本。getNumber()
在对象上不存在。我知道,这就是为什么我评论用OP希望传递的类型替换Object,这只是一个示例oops,对不起。但是你最好设置#Object
而不是Object
:)。
MyObject object1 = new MyObject();
MyObject object2 = new MyObject();