gpt4 book ai didi

java - 如何确保参数是类字段(Java)?

转载 作者:行者123 更新时间:2023-11-29 03:07:08 24 4
gpt4 key购买 nike

我正在创建一个返回汽车列表的 API。 API 用户必须能够请求按 Cars 类的特定属性(字段)对列表进行过滤和排序。我该怎么做?

class Car {
public final String model;
public final String color;

public Car(String m, String c) {
model = m;
color = c;
}
}

class CarListRequest {
public final String sortBy;
public final String filterBy;
public final List<String> filterList;

public CarListRequest(String s, String f, List<String> list) {
sortBy = s;
filterBy = f;
filterList = list;
}
}

有没有办法使用 Java 语言特性来限制 sortBy 和 filterBy 字符串不能包含除 Car 类的属性(字段)之外的任何其他值?

我知道我可以使用枚举来声明 Car 的所有属性,但这会导致字符串重复,我想避免这种情况。

最佳答案

@hmc_jake 的反射(reflection)建议非常有效。但是,如果您想避免反射,可以使用类层次结构来实现:

class CarAttribute {
private String attrib;
public CarAttribute(String att){
attrib = att;
}
// add getters and/or setters for attrib ...
}

class CarModel extends CarAttribute {
}

class CarColor extends CarAttribute {
}

class Car {
public final CarModel model;
public final CarColor color;

public Car(CarModel m, CarColor c) {
model = m;
color = c;
}
}

class CarListRequest {
public final CarAttribute sortBy;
public final CarAttribute filterBy;
public final List<CarAttribute> filterList;

public CarListRequest(CarAttribute s, CarAttribute f, List<CarAttribute> list) {
sortBy = s;
filterBy = f;
filterList = list;
}
}

关于java - 如何确保参数是类字段(Java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31576496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com