zoukankan      html  css  js  c++  java
  • groovy main method is use static main(args) //ok

    Jermdemo Raised to the Law: Groovy classes and scripts

    Groovy classes and scripts

    Groovy has done a lot to make Java more palatable, but at the same time has introduced some confusion as to what developers can get away with at the most fundamental level.

    Living on The Main Line
    In Java, main methods are typically, if not always
    public static void main(String[] args)

    In Groovy, methods are public by default and args is typed dynamically, so you can get away with

    static main(args)  //ok

    but not

    static main() //not ok
    void main() //not ok
    void main(args) //not ok
    

    attempting to run a class with these bad main method declarations, the compiler will invariably return

    Caught: groovy.lang.GroovyRuntimeException: This script or class could not be run.
    It should either:
    - have a main method,
    - be a JUnit test, TestNG test or extend GroovyTestCase,
    - or implement the Runnable interface.

    IntelliJ is clever in that it can recognize the proper declaration on the fly. If you missing the required main method declaration you will get the normal Groovy class file type icon

    If you have a valid main method you will see the runnable arrow


    Groovy scripts
    I have some sturdy bags I take with me to the grocery store. If I buy lot of food they just give me a paper bag in which to put the extra items. Every item is treated the same regardless of which bag they put it in.
    A Groovy script is essentially any file with some code outside the confines of a class. Scripts can contain their own classes but all the stuff outside those is given its own class based on the filename and placed inside a working main(args) method. They just give you another bag - it's no big deal.

    The following Groovy class and Groovy script are equivalent.

    Groovy class with main method

    class aGroovyClass {
      def myString = "I am an instance variable";
    
      static main(args) {
        def myObject = new aGroovyClass();//def required
        println myObject.myString;
    }
    }

    Groovy script with class

    class aGroovyClassWithinAScript {
      def myString = "I am an instance variable";
    }
    myObject = new aGroovyClass(); //no def needed
    println myObject.myString;


    Multiple main methods - you had to ask

    Can classes inside a script have their own main method? Umm, yes, but that is pretty confusing (even to IntelliJ). I would have to explicitly call that main method from my class to use it - main is not a constructor.

    Class with its own main method.




    IntelliJ again
    Both Groovy scripts and Groovy classes with main methods should be run as Groovy Script in the Run/Debug Configuration. Sometimes IntelliJ will default to attempting to run it as a Java application. If you attempt to run a Groovy script as a Java application you will get the following error:

    Exception in thread "main" java.lang.NoSuchMethodError: main
  • 相关阅读:
    PVS 7.6 部署教程
    PHP下载远程图片的3个方法
    [Xcode 实际操作]二、视图与手势-(2)UIView视图的层次关系
    [Swift]检查API可用性
    [Xcode 实际操作]二、视图与手势-(1)UIView视图的基本使用
    [Swift]LeetCode103. 二叉树的锯齿形层次遍历 | Binary Tree Zigzag Level Order Traversal
    [Swift]forEach详解
    [Swift]LeetCode937. 重新排列日志文件 | Reorder Log Files
    [Swift]LeetCode940. 不同的子序列 II | Distinct Subsequences II
    [Swift]LeetCode939. 最小面积矩形 | Minimum Area Rectangle
  • 原文地址:https://www.cnblogs.com/lexus/p/2589918.html
Copyright © 2011-2022 走看看