Создать объектный класс динамически в Java на основе ввода - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу создать класс объекта на основе моего ввода. Например, есть класс кошки. Атрибуты кошачьих пород. Обычно это было бы похоже ...

private String americanShorthair;
private String ragDoll;
private String persian;
//getters and setters

Теперь я хочу, чтобы он был динамическим в зависимости от ввода, и он не установлен в камне. Я хочу иметь разные породы в зависимости от параметров. Если я хочу scottishFold, я могу добавить его в параметр. Могу ли я сделать это на Java? Спасибо

изменить: чтобы было понятнее У меня есть эта коллекция [американская короткошерстная, тряпичная кукла, персидская]

Я хочу, чтобы класс, определяющий объект, имел эти атрибуты, чтобы он выглядел так:

public class Cat(){
private String americanShorthair;
private String ragDoll;
private String persian;
//getters and setters
}

Коллекция основана на вводе, поэтому, если это [имя, возраст, пол], объект должен измениться соответственно, и он должен выглядеть следующим образом ...

public class Cat(){
private String name;
private String age;
private String sex;
//getters and setters
}

1 Ответ

0 голосов
/ 19 ноября 2018

Определите класс с полями-членами для каждого вида информации, которую вы хотите отслеживать.

package com.basilbourque.example;

import java.util.ArrayList;
import java.util.List;

public class CatBreed {
    public String breed;

    // Constructor

    public CatBreed ( String breed ) {
        this.breed = breed;
    }

    @Override
    public String toString ( ) {
        return "CatBreed{ " +
                "breed='" + breed + '\'' +
                " }";
    }

}

Создайте коллекцию для хранения некоторых экземпляров (объектов) этого класса.

    public static void main ( String[] args ) {
        List < CatBreed > breeds = new ArrayList <>( 3 );
        breeds.add( new CatBreed( "Persian" ) );
        breeds.add( new CatBreed( "Maine Coon" ) );
        breeds.add( new CatBreed( "Russian Blue" ) );

        System.out.println( breeds );
    }

[CatBreed {breed = 'Persian'}, CatBreed {breed = 'Maine Coon'}, CatBreed {breed = 'Russian Blue'}]

Если вы представляете породу наотдельных отдельных кошек, определите класс Cat аналогичным образом.

package com.basilbourque.example;

import java.time.Year;
import java.util.ArrayList;
import java.util.List;

public class Cat {
    String breed;
    String name;
    Year yearOfBirth;

    public Cat ( String breed , String name , Year yearOfBirth ) {
        this.breed = breed;
        this.name = name;
        this.yearOfBirth = yearOfBirth;
    }

    @Override
    public String toString ( ) {
        return "Cat{ " +
                "breed='" + breed + '\'' +
                " | name='" + name + '\'' +
                " | yearOfBirth=" + yearOfBirth +
                " }";
    }

    public static void main ( String[] args ) {
        List < Cat > cats = new ArrayList <>( 3 );
        cats.add( new Cat( "Persian" , "Fluffy" , Year.of( 2011 ) ) );
        cats.add( new Cat( "Maine Coon" , "Spot" , Year.of( 2012 ) ) );
        cats.add( new Cat( "Russian Blue" , "Big Boy" , Year.of( 2013 ) ) );

        System.out.println( cats );
    }
}

[Cat {breed = 'Persian' |name = 'Пушистый' |yearOfBirth = 2011}, Кошка {порода = 'Мейн-кун' |name = 'Spot' |yearOfBirth = 2012}, Cat {breed = 'Russian Blue' |имя = 'Большой мальчик' |yearOfBirth = 2013}]

Если все породы известны во время компиляции, используйте enum.Средство enum в Java гораздо полезнее, гибче и мощнее, чем на других платформах.Использование перечисления обеспечивает безопасность типов , гарантирует допустимые значения и делает ваш код более самодокументируемым.

package com.basilbourque.example;

import java.time.Year;
import java.util.ArrayList;
import java.util.List;

public class Cat {
    enum Breed { PERSIAN, MAINE_COON, RUSSIAN_BLUE }

    Breed breed;
    String name;
    Year yearOfBirth;

    public Cat ( Breed breed , String name , Year yearOfBirth ) {
        this.breed = breed;
        this.name = name;
        this.yearOfBirth = yearOfBirth;
    }

    @Override
    public String toString ( ) {
        return "Cat{ " +
                "breed='" + breed + '\'' +
                " | name='" + name + '\'' +
                " | yearOfBirth=" + yearOfBirth +
                " }";
    }

    public static void main ( String[] args ) {
        List < Cat > cats = new ArrayList <>( 3 );
        cats.add( new Cat( Breed.PERSIAN , "Fluffy" , Year.of( 2011 ) ) );
        cats.add( new Cat( Breed.MAINE_COON , "Spot" , Year.of( 2012 ) ) );
        cats.add( new Cat( Breed.RUSSIAN_BLUE , "Big Boy" , Year.of( 2013 ) ) );

        System.out.println( cats );
    }
}

[Cat {breed = 'PERSIAN' |name = 'Пушистый' |yearOfBirth = 2011}, Кошка {порода = 'MAINE_COON' |name = 'Spot' |yearOfBirth = 2012}, Кошка {breed = 'RUSSIAN_BLUE' |имя = 'Большой мальчик' |yearOfBirth = 2013}]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...