获取数组流的最后一个元素?
今天学习通过反射获取成员变量时,由于要输出并查看成员变量的字节码文件对象,类似于:
public java.lang.String com.yujiuyao.reflection.getclass.Student.address
目的就在于查看Student类中的address成员变量,但是输出的内容不便于查看,所以综合最近学到的东西,用最简单的方法输出想要查看的内容,即
address
思路
- 将字符串内容分割返回数组
- 将数组转换为流对象
- 使用Stream中的reduce()或skip()方法得到流中的最后一个数据
1. Stream.reduce
package com.yujiuyao.reflection;
import java.lang.reflect.Field;
import java.util.stream.Stream;
public class GetFiled {
public static void main(String[] args) throws ClassNotFoundException {
Class<?> studentClass = Class.forName("com.yujiuyao.reflection.getclass.Student");
Field[] declaredFields = studentClass.getDeclaredFields();
for (Field field : declaredFields) {
System.out.println(field);
String[] strings = field.toString().split("\\.");
System.out.println(Stream.of(strings).reduce((first, second) -> second).orElse("Nop"));
}
}
}
name
age
address
2. Stream.skip
package com.yujiuyao.reflection;
import java.lang.reflect.Field;
import java.util.stream.Stream;
public class GetFiled {
public static void main(String[] args) throws ClassNotFoundException {
Class<?> studentClass = Class.forName("com.yujiuyao.reflection.getclass.Student");
Field[] fields = studentClass.getDeclaredFields();
for (Field field : fields) {
String[] strings = field.toString().split("\\.");
Stream.of(strings).skip(strings.length - 1).forEach(System.out::println);
}
}
}
name
age
address
评论区