【问题标题】:Batch Create Java Class Stubs批量创建 Java 类存根
【发布时间】:2011-02-21 04:25:27
【问题描述】:

给定一个潜在的类名列表: 1. 阿拉斯加 . . . 50. 怀俄明州

是否有一个工具可以为每个提供的参数创建空的 java 类文件? 我正在考虑类似 Eclipse 中的“New...Class”对话框,仅在 steriods 上。 :-)

提前致谢, 凯尔

【问题讨论】:

  • 为什么不只是一个带有name 属性的State 类?
  • 这纯粹是好奇,但你为什么要这样做呢?你能告诉我们更多关于你想要做什么的细节吗?
  • 您真的想为每个州开设一个班级吗?这听起来像是一个奇怪且错误的设计决定。

标签: java eclipse scripting


【解决方案1】:

我不确定是否存在批量新类向导,但是找到一个新类向导所需的时间与在一个简单的蝙蝠中滚动您自己的一样长。我将使用for 循环,遍历列出要创建的类名称的文件的内容,并在循环echo 的主体中将模板指向新创建的文件,使用文件中的值既要命名.java又要在模板中填写类名。

编辑:一个示例 bat,它从名为 classnames.txt 的文件中读取类名并创建非常简单的存根:

for /F "tokens=1" %%a in (classnames.txt) do call :createClass %%a

dir *.java

goto :eof

:createClass 
   echo package com.abc; > %1.java 
   echo.  >> %1.java 
   echo public class %1 {>> %1.java 
   echo      public %1() { >> %1.java 
   echo      } >> %1.java 
   echo } >> %1.java

【讨论】:

    【解决方案2】:

    也许试试枚举:

    package p;
    
    interface Foo {
        void bar();
    
    }
    
    enum State implements Foo {
        Alabama, Alaska, Arizona, Arkansas, California(new Integer(42)) {
            public void bar() {
                System.out.print("is strange ");
                super.bar();
            }
    
        },
        Colorado, Connecticut, Delaware, Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana, Nebraska, Nevada, NewHampshire, NewJersey, NewMexico, NewYork, NorthCarolina, NorthDakota, Ohio, Oklahoma, Oregon, Pennsylvania, RhodeIsland, SouthCarolina, SouthDakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, WestVirginia, Wisconsin, Wyoming;
    
        State() {
            this(null);
        }
    
        State(Object object) {
            this.object = object;
        }
    
        public void bar() {
            System.out.println(this + " " + object);
        }
    
        public static void main(String[] arguments) {
            for (State state : State.values())
                state.bar();
        }
    
        final Object object;
    }
    

    【讨论】:

    • 您可能想要切换这些语句的顺序: System.out.print("is奇怪");超级酒吧();或者你会得到“奇怪的加利福尼亚”
    • 是的。我只是想展示如何为特定状态覆盖 bar 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 2021-01-09
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多