当前位置: 首页 > 面试题库 >

Scala和Java代码示例,其中Scala代码看起来更简单/行更少?

邴越彬
2023-03-14
问题内容

我需要一些Scala和Java代码的代码示例(并且我也对此感到很好奇),这些示例表明Scala代码比用Java编写的代码更简单,简洁(当然,两个示例都应该解决相同的问题)。

如果只有Scala示例带有注释,例如“这是Scala中的抽象工厂,在Java中看起来会很麻烦”,那么这也是可以接受的。

谢谢!

我最喜欢的所有接受和这个答案


问题答案:

让我们改进堆栈器的示例,并使用Scala的case类:

case class Person(firstName: String, lastName: String)

上面的Scala类包含下面的Java类的所有功能, 以及更多其他功能 -例如,它支持模式匹配(Java没有此功能)。Scala
2.8添加了命名和默认参数,这些参数用于为案例类生成一个复制方法,它具有与以下Java类的with *方法相同的功能。

public class Person implements Serializable {
    private final String firstName;
    private final String lastName;

    public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public Person withFirstName(String firstName) {
        return new Person(firstName, lastName);
    }

    public Person withLastName(String lastName) {
        return new Person(firstName, lastName);
    }

    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Person person = (Person) o;
        if (firstName != null ? !firstName.equals(person.firstName) : person.firstName != null) {
            return false;
        }
        if (lastName != null ? !lastName.equals(person.lastName) : person.lastName != null) {
            return false;
        }
        return true;
    }

    public int hashCode() {
        int result = firstName != null ? firstName.hashCode() : 0;
        result = 31 * result + (lastName != null ? lastName.hashCode() : 0);
        return result;
    }

    public String toString() {
        return "Person(" + firstName + "," + lastName + ")";
    }
}

然后,在使用中(当然):

Person mr = new Person("Bob", "Dobbelina");
Person miss = new Person("Roberta", "MacSweeney");
Person mrs = miss.withLastName(mr.getLastName());

反对

val mr = Person("Bob", "Dobbelina")
val miss = Person("Roberta", "MacSweeney")
val mrs = miss copy (lastName = mr.lastName)


 类似资料:
  • 本文向大家介绍Scala求和示例代码,包括了Scala求和示例代码的使用技巧和注意事项,需要的朋友参考一下 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在Java虚拟机上,并兼容现有的Java程序。 Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。 =>

  • 问题内容: 在Scala邮件列表中,不同的人经常说:“编译器将此[scala]代码重写为此[java / scala ??]代码”。例如,如果最新的线程之一,Scala看到 然后编译器将其重写为(有效): 我如何找出我的代码的编译器输出是什么?我应该为此反编译生成的字节码吗? 问题答案: 您可以使用“ -print”作为编译器选项,而scalac将删除所有Scala特定的功能。 例如,这是原始代码

  • 主要内容:创建JDBC应用程序,示例代码本文章教程中将演示如何创建一个简单的JDBC应用程序的示例。 这将显示如何打开数据库连接,执行SQL查询并显示结果。 这个示例代码中涉及所有步骤,一些步骤将在本教程的后续章节中进行说明。 创建JDBC应用程序 构建JDBC应用程序涉及以下六个步骤 - 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用就足够了。 注册JDBC驱动程序:需要初始化驱动程序,以便可以打开与数据库的

  • 问题内容: 我有一个用Scala编写的应用程序,我的一些团队成员希望使用Java版本。这是一个演示应用程序,可以使用用Scala编写的另一个API,并且他们希望该应用程序的Java版本能够使用Java中的API。但是,该应用程序有些大,我不想用Java手动重排代码(他们也不想学习Scala)。是否有任何工具可以从Scala代码自动生成(可读)Java代码? 问题答案: 他们希望应用程序的Java版

  • 在试验并发执行时,我想知道如何实际测试它。执行流程具有副作用性质,创建未来是为了包装独立的执行/处理。 我一直在寻找一些关于如何正确单元测试的好例子,下面的场景(和是我希望测试的方法): 情景#1 情景动机 立即返回,但调用两个执行单独任务的未来(例如,保存分析并将记录存储到数据库)。这些服务调用可以被模拟,但我试图测试的是,一旦我将它们包装在s中,这两个服务都会被调用 场景#2 情景动机 从可以

  • 我如何做到这一点?还是我理解了一些根本错误的东西? 后果 预期结果