在 main 方法中编写一个函数 - Java [英] Writing a function inside the main method - Java

查看:27
本文介绍了在 main 方法中编写一个函数 - Java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

能不能在main方法里面写一个方法?例如我找到了这个代码:

Can you write a method inside the main method? For example I found this code:

public class TestMax {
    public static void main(String[] args) {
    int i = 5;
    int j = 2;
    int k = max(i, j);
    System.out.println("The maximum between is " + k);
}

 public static int max(int num1, int num2) {
    int result;
    if (num1 > num2)
       result = num1;
    else
       result = num2;

    return result; 
  }
}

可以将方法max编码在main方法中吗?

Can the method max be coded inside the main method?

推荐答案

当 Java 8 出现时,Closure/Lambda 功能应该让你可以在 main 方法中定义 max 方法.在此之前,您只能在特殊情况下在 main 方法中定义方法.

When Java 8 comes out, the Closure/Lambda functionality should make it so that you can define the max method in the main method. Until then, you'll only be able to define a method in the main method in special circumstances.

碰巧,您的问题确实属于特殊情况.有一个接口(Comparable),它封装了比较相同类型的两个事物的逻辑.因此,代码可以改写如下:

As it happens, your question does fall into the special circumstance. There is an interface (Comparable) which encapsulates the logic of comparing two things of the same type. As a result, the code could be rewritten as follows:

public class TestMax {
  public static void main(String[] args) {
    int i = 5;
    int j = 2;
    Comparator<Integer> compare = new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            // Because Integer already implements the method Comparable,
            // This could be changed to "return o1.compareTo(o2);"
            return o1 - o2;
        }
    };
    // Note that this will autobox your ints to Integers.
    int k = compare.compare(i, j) > 0 ? i : j;
    System.out.println("The maximum between is " + k);
  }
}

这只是因为在标准 Java 发行版中已经存在比较器接口.可以通过使用库来改进代码.如果我正在编写此代码,我会将 Google Guava 添加到我的类路径中.然后我可以写以下内容:

This only works because the comparator interface already exists in the standard Java distribution. The code could be made better through the use of libraries. If I were writing this code, I would add Google Guava to my classpath. Then I could write the following:

public class TestMax {
  public static void main(String[] args) {
    int i = 5;
    int j = 2;
    // The 'natural' ordering means use the compareTo method that is defined on Integer.
    int k = Ordering.<Integer>natural().max(i, j);
    System.out.println("The maximum between is " + k);
  }
}

我怀疑您的问题更多地是关于 Java 语言的能力,而不是与订购数字(和其他事情)有关的标准实践.所以这可能没有用,但我想我会分享以防万一.

I suspect that your question was more about the abilities of the Java language rather than standard practices having to do with ordering numbers (and other things). So this might not be useful, but I thought I'd share just in case.

这篇关于在 main 方法中编写一个函数 - Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆