首页 > 解决方案 > 在 java 中使用 Lambda 显示文本

问题描述

手头的工作:-

写一个main方法。

到目前为止,我已经编写了以下代码并且它也可以工作,但是我的评估失败了。有没有其他方法可以满足问题中给出的所有要求。

Main.java
    1 public class Main implements DisplayText
    2 {
    3     public static void main(String args[])
    4     {
    5         Main obj = new Main();
    6         obj.welcomeMessage();
    7         //String name=obj.getInput();
    8         //obj.displayText(name);
    9     }
   10     public static DisplayText welcomeMessage()
   11     {
   12         DisplayText ref = (String str) -> {
   13             System.out.println("Welcome "+str);
   14         };
   15         ref.displayText(ref.getInput());
   16         return ref;
   17     }
   18     public void displayText(String text)
   19     {
   20         System.out.println(text);
   21     }
   22 }

DisplayText.java
    1 import java.util.*;
    2 public interface DisplayText
    3 {
    4     public void displayText(String text);
    5     Scanner sc = new Scanner(System.in);
    6     public default String getInput()
    7     {
    8         String message = sc.nextLine();
    9         return message;
   10     }
   11     
   12 }

标签: javalambdainterface

解决方案


问题是该DisplayText接口是“功能接口”,您必须对其进行注释。无需使 Main 类实现该接口,也无需定义Scanneras 接口成员。
我将以这种方式实施解决方案:

import java.util.Scanner;

@FunctionalInterface
interface DisplayText {
    void displayText(String text);
    
    public default String getInput()
    {
        System.out.print("Your name: ");
        Scanner sc = new Scanner(System.in);
      
        return sc.nextLine();
    }
}

public class Main {

     public static void main(String... args) {
        welcomeMessage();
     }
     
    public static void welcomeMessage()
    {
        DisplayText ref = (String str) -> System.out.println("Welcome "+str);
         
        ref.displayText(ref.getInput());
     }
}

这是我得到的输出:

D:\Marco\workspace>javac Main.java

D:\Marco\workspace>java Main
Your name: Watson
Welcome Watson

推荐阅读