侧边栏壁纸
博主头像
YuJiuYao

You should think more, not talk more

  • 累计撰写 11 篇文章
  • 累计创建 7 个标签
  • 累计收到 2 条评论
标签搜索

Java1.8新特性-获取数组流的最后一个元素

YuJiuYao
2021-07-18 / 0 评论 / 1 点赞 / 36 阅读 / 1,326 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

获取数组流的最后一个元素?

今天学习通过反射获取成员变量时,由于要输出并查看成员变量的字节码文件对象,类似于:

public java.lang.String com.yujiuyao.reflection.getclass.Student.address

目的就在于查看Student类中的address成员变量,但是输出的内容不便于查看,所以综合最近学到的东西,用最简单的方法输出想要查看的内容,即

address

思路

  1. 将字符串内容分割返回数组
  2. 将数组转换为流对象
  3. 使用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
1

评论区