如何在Java中返回类实例的名称

时间:2015-07-12 02:56:22

标签: java

我是Java(和编程)的初学者,应该有一个简单的答案,但我找不到它。我想编写一个代码来打印实例变量的引用名称的值。例如:

Public class Person {
    Person() {
        //attributes, height, weight, etc.
    }

    Person Person1 = new Person();
}

我想编写一行代码来产生符合

的内容

“Person1的属性是......”

System.out.println的调整(“Person1的属性”+( ???? )+“是......”)

我无法找到或创建一个返回名称Person1的方法。

4 个答案:

答案 0 :(得分:3)

“Person1”不是实例的名称,而是保存对实例的引用的变量的名称。实例本身没有名称。如果你想保留它,你必须给它一个名字属性。

public class Person {
   private final String name;
   public Person(String name) {
      this.name = name;
   }

   public String getName() {
       return this.name;
   }
}

然后你可以这样做:

Person person1 = new Person("Jeff");

System.out.println("Person1's name is: " + person1.getName());

输出结果为:

  

Person1的名字是:杰夫

答案 1 :(得分:2)

通常不可能完全按照您的意愿行事。我认为变量名甚至不会被编译到类中。

可以使用编译时注释完成,但这并非易事。

答案 2 :(得分:0)

为了能够做到这一点,你应该覆盖toString()函数 像这样的东西

/* Returns the string representation of your class object .*/
     @Override
        public String toString() {
            return "The attributes of this person are :height - " + height + " weight - " + weight  + // you are print out all your properties. 
        }

现在,当您想要打印对象时,您可以

System.out.println(person1);

答案 3 :(得分:0)

我不确定您对编程语言的熟悉程度。我看到你说你是Java的新手,所以我将从那里开始。与许多面向对象语言一样,Java在创建类时使用继承。在Java中,当您定义一个类时,您可以使用" extends"关键字到子类并使用或覆盖父类中的任何方法。现在,在Java中, ALL 类自动从这个名为Object的类继承。

这非常有用,因为Object包含一些有用的方法,最值得注意的是#34; toString()"。您不需要使用extends来获取这些方法顺便说一下。现在,toString本身并没有用,但你可以覆盖它来打印出你想要的东西。

public class Person
{
    String name;
    int age;

    Person(String name, int age)
    {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString()
    {
        return "Name is: " + name + "and age is: " + age";
    }
}

注意我在那里定义的toString()方法?无论何时在对象上调用此方法,都会打印出该字符串。例如,在您的示例中:

Person person1 = new Person("Ford Prefect", 42);

System.out.println(person1.toString()); //Will print what we defined in toString.

你甚至不需要.toString(),只需要person1,因为JVM会意识到你打算使用toString。如果使用IntelliJ IDE,则可以执行Alt + Insert并选择toString()来覆盖它。 IDE是帮助您提高效率的绝佳工具。祝你好运!