Java匿名对象代码示例

1.概念

  一般地,我们在使用对象前,需要去声明并创建一个对象,此时我们会给对象一个对象名,以便我们在程序中通过对象名多次使用该对象。

而今天我们讲的匿名对象则不同,我们不会给它命对象名,而是在使用它的时候直接以 (new + 构造方法) 的形式直接创建并初始化这个对象,不用给它命名,并且它在使用完后,会被直接销毁,所以是一次性的,无法重复使用该对象。

  我们可以用匿名对象做参数,也可以用匿名对象调用方法。

2.代码示例

我们先创建一个学生类

class Student {
    private final int id;
    private final String name;

    public Student( int id, String name) {
        this.name =name;
        this.id = id;
    }
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public void My_print1() {
        System.out.println("目前有100个学生");
    }

    public void My_print2(Student a) {
        System.out.println("学生学号为:" + a.id);
        System.out.println("学生姓名为:" + a.name);
    }
}

  我们有两个私有变量 id 和 name,通过构造方法 Student() 去给它们初始化,用 toString()方法去返回有关学生信息的字符串,My_print1()方法用于输出学生人数,My_print2()用于输出学生的信息。

public class Main {
    public static void main(String[] args) {

        // 用创建一个对象的方式输出学生信息
        Student A = new Student( 2023, "Alice");
        System.out.println(A);

        // 创建一个匿名对象输出学生信息
        System.out.println( new Student(2024, "Tom"));

        // 创建一个匿名对象并直接调用方法
        new Student( 0, "").My_print1();

        // 创建一个匿名对象作为参数
        new Student(0,"").My_print2(new Student(1000, "LiLi"));
    }
}

 在主函数中,我们可以清晰的看到匿名对象和普通对象的区别,普通对象需要声明和命名,而匿名对象则直接创建及初始化即可。

  在我们要需要调用学生类里面的方法时,我们可以直接通过创建一个匿名对象去调用,这样就不用去声明一个新的对象了,避免了对象名的繁琐,可以让我们的代码更加清晰易懂。

3.代码综合

public class Main {
    public static void main(String[] args) {

        // 用创建一个对象的方式输出学生信息
        Student A = new Student( 2023, "Alice");
        System.out.println(A);

        // 创建一个匿名对象输出学生信息
        System.out.println( new Student(2024, "Tom"));

        // 创建一个匿名对象并直接调用方法
        new Student( 0, "").My_print1();

        // 创建一个匿名对象作为参数
        new Student(0,"").My_print2(new Student(1000, "LiLi"));
    }
}

class Student {
    private final int id;
    private final String name;

    public Student( int id, String name) {
        this.name =name;
        this.id = id;
    }
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public void My_print1() {
        System.out.println("目前有100个学生");
    }

    public void My_print2(Student a) {
        System.out.println("学生学号为:" + a.id);
        System.out.println("学生姓名为:" + a.name);
    }
}

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 以下是一个使用Java lambda表达式对列表进行排序的示例代码: ``` List<String> names = Arrays.asList("peter", "anna", "mike", "xenia"); Collections.sort(names, (a, b) -> a.compareTo(b)); ``` 在这个例子中,lambda表达式 `(a, b) -> a.compareTo(b)` 是一个实现了 `Comparator` 接口的匿名函数,用于比较列表中的字符串。这个 lambda 表达式接收两个参数 `a` 和 `b`,并返回它们的字典序比较结果。 请注意,这是一个非常简单的示例,在实际使用中,你可以使用lambda表达式来处理更复杂的业务场景。 ### 回答2: Java Lambda表达式是Java SE 8中引入的一种新的语法特性,它可以简化代码,使开发更加便捷和灵活。下面是一个示例,展示了Java Lambda的应用代码: 假设我们有一个存储着学生对象的List集合,每个学生对象都包含有姓名和分数。我们现在需要找到所有分数大于80分的学生并打印出他们的姓名。使用传统的方式,代码可能是这样的: ```java List<Student> students = new ArrayList<>(); // 添加学生对象到集合中 for (Student student : students) { if (student.getScore() > 80) { System.out.println(student.getName()); } } ``` 使用Lambda表达式可以将以上代码简化为: ```java List<Student> students = new ArrayList<>(); // 添加学生对象到集合中 students.stream() .filter(student -> student.getScore() > 80) .forEach(student -> System.out.println(student.getName())); ``` 在上面的代码中,我们使用了`stream()`方法将集合转换为一个流。然后,使用`filter()`方法对流中的元素进行筛选,只保留分数大于80的学生。最后,使用`forEach()`方法对每个学生对象执行打印姓名的操作。 通过使用Lambda表达式,我们可以更加简洁地实现对数据的处理,代码也更加易读和易于维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值