Как я могу получить в качестве вывода имя переменной и ее тип в Java? - PullRequest
1 голос
/ 25 марта 2020

У меня есть следующий класс:

public class Example {

    private String name;
    private int year;

    public Example() {

        name = "Clifford the big red dog";
        year = 2020;
    }

    public void showData() {
        // ?????
    }
}

Представьте себе, что в основном классе я создаю объект предыдущего класса (Example) и выполняю его конструктор. Затем я хочу выполнить showData(), и я хотел бы видеть следующий вывод (данный пример):

String name Clifford the big red dog
int year 2020

Основное будет выглядеть так:

public static void main () {

    Example example = new Example();

    example.showData();
}

Есть ли Как я могу это сделать?

1 Ответ

1 голос
/ 25 марта 2020

Сделайте это следующим образом:

class Example {

    private String name;
    private int year;

    public Example() {

        name = "Clifford the big red dog";
        year = 2020;
    }

    public void showData() {
        System.out.println(name.getClass().getSimpleName() + " name " + name);
        System.out.println(((Object) year).getClass().getSimpleName() + " year " + year);
    }
}

public class Main {
    public static void main(String[] args) {
        Example example = new Example();
        example.showData();
    }
}

Вывод:

String name Clifford the big red dog
Integer year 2020

Однако, поскольку showData является методом class Example, который уже знает Что касается переменных экземпляра, вы можете просто сделать это следующим образом:

class Example {

    private String name;
    private int year;

    public Example() {

        name = "Clifford the big red dog";
        year = 2020;
    }

    public void showData() {
        System.out.println("String name " + name);
        System.out.println("int year " + year);
    }
}

public class Main {
    public static void main(String[] args) {
        Example example = new Example();
        example.showData();
    }
}

Вывод:

String name Clifford the big red dog
int year 2020
...