当前位置: 首页 > 知识库问答 >
问题:

如何在Java中访问可选类型的变量?

蒙奇
2023-03-14

我的主班里有一个学生班。Student类包含Id和名称。在我的主要班级里,我正在把这三个学生加到名单上。现在我需要取名字不应该为空的第一个学生。为此,我使用了java stream()类,其中包含findFirst()方法来获取第一个匹配值。因此返回类型是可选的。

这是我写的

Optional<Student> ans = l.stream()
                        .filter(e -> e != null && e.name != null)
                        .findFirst();
Student ans = l.stream()
               .filter(e -> e != null && e.name != null)
               .findFirst()
               .orElse(null);
import java.util.*;
import java.io.*;

public class Sample {

public static class Student { 
    int id;
    String name;
}

    public static void main(String args[]) {
        List<Student> l = new ArrayList<>();
        Student s = new Student();
        s.id = 0;
        s.name  = "First";

        Student t = new Student();
        t.id = 1;
        t.name = "";

        Student r = new Student();
        r.id = 2;
        r.name = "Hdyun";

        l.add(s);
        l.add(t);
        l.add(r);

        Optional<Student> ans = l.stream()
                        .filter(e -> e != null && e.name != null)
                        .findFirst();
        System.out.println(ans.name);
    }
}
Sample.java:32: error: cannot find symbol
        System.out.println(ans.name);
                              ^
  symbol:   variable name
  location: variable ans of type Optional<Student>

我该怎么整改呢?

共有1个答案

石正信
2023-03-14

变量ans可能为空;如果要执行某些操作(如果值存在),可以执行以下操作:

ans.ifPresent(student-> System.out.println(student.name));
 类似资料:
  • 我正在尝试将参数传递给BuffereImage。getSubImage()java方法: 在groovy中,我有以下代码: 在上面的代码片段中,传递给的似乎是,而不是基元类型。因此,我得到以下错误: groovy.lang.方法异常:没有方法签名:java.awt.image.BufferedImage.getSubImage()适用于参数类型:(java.lang.整数,java.lang.整数

  • 问题内容: 我有这个: 我如何才能实际修改全局变量g_c? 问题答案: 通过在访问它的函数中声明它: 在Python文档说这个,有关声明: 全局语句是一个声明,适用于整个当前代码块。

  • 问题内容: 我正在尝试创建一个JLabel数组,当单击它们时,所有这些标签都应该变为不可见。当试图通过需要访问用于声明标签的循环的迭代变量的内部类设置鼠标侦听器时,就会出现问题。代码是不言自明的: 我以为我可以通过使用内部方法中的(或代替)内部调用来克服此问题,但我一直无法弄清楚。 编译错误是:从内部类内部访问局部变量i;需要宣布为最终` 我敢肯定,答案一定是我从未想过的愚蠢之举,或者我犯了一些小

  • 我想这样写: 我使用https://en.wikibooks.org/wiki/More_C++_惯用语/成员检测器 然而,GCC(4.8.4)仍然抱怨在中未定义时使用。有办法解决这个问题吗?

  • 问题内容: 我一直在搜索很多东西,但我仍然不知道如何在python中访问来自不同类的变量。在这种情况下,我想访问变量从类类。 这是我的代码。 问题答案: 从本质上讲,你的问题有一个简单的答案。“如何从对象X获取值?” 对于任何对象,答案都是相同的:你可以通过询问对象X来获得答案。为此,你所需要做的就是获取对该对象的引用,然后直接访问该属性。 从其他页面访问数据 在你的情况下,中的代码需要引用,以便