java 字符串拼接成属性,然后通过这个属性去取值
时间: 2024-01-19 10:02:41 浏览: 21
可以使用反射来实现。
先将字符串拼接成属性名,例如:
```
String propertyName = "age";
```
然后使用反射获取对象中对应属性的值:
```
Object value = object.getClass().getMethod("get" + StringUtils.capitalize(propertyName)).invoke(object);
```
其中,`object` 是需要获取属性值的对象,`StringUtils.capitalize(propertyName)` 是将属性名的首字母大写,以符合 Java Bean 命名规范。如果是 boolean 类型的属性,则方法名应该是 `is` 开头,例如:
```
String propertyName = "married";
Object value = object.getClass().getMethod("is" + StringUtils.capitalize(propertyName)).invoke(object);
```
注意,这种方式获取属性值需要保证属性名的正确性和对应的 getter 方法存在。
相关问题
Java 如何list取值近三年的数据时间为字符串
可以使用 Java 8 的日期时间 API,结合 `DateTimeFormatter` 类和 `LocalDate` 类来实现。
假设你的时间字符串格式为 "yyyy-MM-dd",可以按照以下步骤来获取近三年的数据:
1. 获取当前日期:`LocalDate currentDate = LocalDate.now();`
2. 计算三年前的日期:`LocalDate threeYearsAgo = currentDate.minusYears(3);`
3. 将日期转换为字符串:`String dateStr = threeYearsAgo.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));`
4. 将日期字符串存入 List:`List<String> dates = new ArrayList<>();`,然后在循环中添加日期字符串:`dates.add(dateStr);`
完整代码示例:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
LocalDate currentDate = LocalDate.now();
LocalDate threeYearsAgo = currentDate.minusYears(3);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<String> dates = new ArrayList<>();
for (LocalDate date = threeYearsAgo; date.isBefore(currentDate.plusDays(1)); date = date.plusDays(1)) {
dates.add(date.format(formatter));
}
System.out.println(dates);
}
}
```
输出结果为近三年的所有日期字符串,例如:
```
[2019-06-12, 2019-06-13, 2019-06-14, ..., 2022-06-10, 2022-06-11, 2022-06-12]
```
java反射获得属性值_java反射取对象属性值 不是通过get方法取值?
可以通过反射获得对象的属性值,不一定需要通过getter方法。使用反射可以直接访问对象的私有属性,而不需要暴露getter方法。以下是通过反射获取对象属性值的示例代码:
```
public class MyClass {
private int myField;
public MyClass(int myField) {
this.myField = myField;
}
}
// ...
MyClass obj = new MyClass(42);
Field field = obj.getClass().getDeclaredField("myField");
field.setAccessible(true);
int value = (int) field.get(obj);
System.out.println(value); // prints "42"
```
这段代码首先获取了`MyClass`类的`myField`属性,然后设置该属性可访问,并使用`get`方法获取`obj`对象的`myField`属性值。注意,使用反射访问私有属性时,需要先设置属性可访问。