如何在方法调用中获取一个变量,并使用它标识java中要设置的几个对象之一

如何在方法调用中获取一个变量,并使用它标识java中要设置的几个对象之一,java,object,Java,Object,我有一个类可以创建一个对象,它可以创建和管理9个其他对象,我正在尝试编写一个方法,可以从一个对象中获取一个int,然后在另一个对象中设置它 为了做到这一点,我想我必须在方法调用中识别两个对象,我尝试了获取一个字符串,但没有成功 public void moveNumber(String object1, String object2) { int number = 0; number = object1.getNumber(); object2.setNumber(num

我有一个类可以创建一个对象,它可以创建和管理9个其他对象,我正在尝试编写一个方法,可以从一个对象中获取一个int,然后在另一个对象中设置它

为了做到这一点,我想我必须在方法调用中识别两个对象,我尝试了获取一个字符串,但没有成功

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();