在类数组中分配相同的字段

时间:2015-12-20 08:36:13

标签: java arrays

我有一个名为Book的类的数组,其中包含三个字段, int pYear,字符串名称和字符串作者。现在我想初始化数组中的所有pYear。有没有比这更快的方法:

bList[0].pYear=1996;
bList[1].pYear=1998;
bList[2].pYear=2000;

等等?

2 个答案:

答案 0 :(得分:0)

如果“更快”意味着输入更少的代码,您可以执行以下操作:

int[] years = {1996,1998,2000,...};
for (int i = 0; i < years.length && i < bList.length; i++)
    bList[i].pYear = years[i];

当然最好将pYear设为私有,并使用setter方法而不是直接赋值。

在java 8中,您可以将其缩减为两行:

int[] years = {1996,1998,2000,...};
IntStream.range(0,bList.length).forEach(i->bList[i].pYear = years[i]);

答案 1 :(得分:0)

如果你有一个具有多个字段的特定Object(类),那么可能是糟糕的设计(但不是不可接受的设计,特别是如果这是一个赋值)来按每个字段而不是每个对象初始化它。

如果有很多对象,您可以使用图书的“字段”数据创建一个简单的json或xml文件,并使用BufferedReader创建一个简单的加载器,为List<Book>创建一个new Book(year, name, author); import ... @ControllerAdvice public class SpringExceptionResolver { Logger logger = LoggerFactory.getLogger("com.realitylabs.event.controller.RecoverController"); @ExceptionHandler({CorruptedSessionUserException.class}) @ResponseBody @ResponseStatus(value=HttpStatus.FORBIDDEN) public ErrorObject userNotFoundExceptionHandler() { // Handle exception // log using the logger. // We usually return an error object in JSON so that we can show custom // error messages. } } 1}},如果需要,你可以转换为数组。