在 Java 中的主 class 里面放一个 class 可以吗?

Is it fine to put a class inside the main class in Java?

我想知道将class放在Main class中是否合适,如下所示的代码片段? 这段代码工作正常,但只是想确定这是否正确,
将 class 以静态方式放入主 class 中,而无需将整体分开 class.
例如;



    public class Main {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            LinearSearch ls = new LinearSearch();
    
            int[] arr = {20, 46, 22, 19, 6, 42, 14, 5, 48, 47, 17, 39, 51, 7, 2};
            System.out.println("Element to be found: ");
            int x = sc.nextInt();
            ls.linearSearch(arr, x);
    
        }
        public static class LinearSearch {
            int linearSearch(int[] arr, int target) {
                for(int i=0;i<arr.length;i++) {
                    if(arr[i] == target) {
                        System.out.println("Item found at = "+(i+1));
                    }
                }
                return -1;
            }
        }
    }

如果您创建了一个 class 或一个方法,那是因为您需要在其他地方使用相同的代码,如果您需要这样做,我建议您将该代码放在 LinearSearch class 文件中,或者将其转换为 public 静态方法(使用静态方法,您可以在不声明对象的情况下调用它,例如 Main.linearSearch(arr,target)),否则如果您只需要使用它一次,就像在您的代码中一样可以将其转换为私有方法或简单地放置您需要的代码而不是使用方法。

另外,据我所知,没有使用返回值,因此您可以将其转换为 void 函数。

像这样:

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int[] arr = {20, 46, 22, 19, 6, 42, 14, 5, 48, 47, 17, 39, 51, 7, 2};
        System.out.println("Element to be found: ");
        int x = sc.nextInt();
        linearSearch(arr, x);
    }

    private static void linearSearch(int[] arr, int target) {
        for(int i=0;i<arr.length;i++) {
            if(arr[i] == target) {
                System.out.println("Item found at = "+(i+1));
            }
        }
    }
}