java - 基于输入在java中动态创建对象类
问题描述
我想根据我的输入创建一个对象类。例如,有一个 cat 类。属性是猫的品种。通常情况下,它会像...
private String americanShorthair;
private String ragDoll;
private String persian;
//getters and setters
现在我希望它基于输入是动态的,而不是一成不变的。我想根据参数有不同的品种。如果我想要 scottishFold,我可以在参数中添加它。我可以在 Java 中做到这一点吗?谢谢
编辑:为了更清楚,我有这个系列 [americanShorthair, ragDoll, persian]
我希望定义对象的类具有这些属性,所以它看起来像这样:
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
}
解决方案
为要跟踪的每种信息定义一个包含成员字段的类。
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='波斯'},CatBreed{breed='缅因浣熊'},CatBreed{breed='俄罗斯蓝'}]
如果您要在特定的个别猫上代表品种,请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 );
}
}
[猫{品种='波斯'| 名称='蓬松' | yearOfBirth=2011 }, Cat{ 品种='缅因浣熊' | 名称='现货' | yearOfBirth=2012 }, Cat{ 品种='俄罗斯蓝' | 名称='大男孩' | 出生年份=2013 }]
如果所有品种在编译时都是已知的,请使用枚举。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 );
}
}
[猫{品种='波斯'| 名称='蓬松' | yearOfBirth=2011 }, 猫{ 品种='MAINE_COON' | 名称='现货' | yearOfBirth=2012 }, 猫{ 品种='RUSSIAN_BLUE' | 名称='大男孩' | 出生年份=2013 }]
推荐阅读
- ios - Cocoapods 依赖管理器是否增加了 xcode 项目的大小?
- ios - Swift将方法中的特定值作为参数传递
- python - Python:如何连接到 MySQL 数据库
- android - CheckBox 在新的 Android 材料库中无法正常工作,无法看到实际的复选标记
- django - django-s3direct 文件上传问题
- django - 从 Django Rest Framework 返回 XML、JSON 和 PDF
- ruby-on-rails - 捆绑安装失败但在使用 capistrano deploy 时仍然停止 sidekiq
- sql - 使用实体框架插入大量重复数据
- python - 如何在 Pandas 中连接包含列表(系列)的两列
- azure-devops - VSTS 配置代理池和队列