java - 在匿名类上使用方法

标签 java class anonymous

我正在尝试弄清楚我想做的事情是否可能。我环顾四周,谷歌并没有提供太大的帮助,至少在这个具体案例中是这样。

这就是我正在尝试做的事情。我正在处理的作业被设计为从命令行运行多次,并具有两组可能的参数: ["CREATE""cardType"] 或 ["VERIFICATION""accountNumber""transactionAmout"] 。每次传递“CREATE”标志时,都会创建该类的匿名实例 - 构造函数创建与该类关联的各种数据字段,并将它们写入文件,然后程序退出。到目前为止还好。 这是构造函数的一个片段(其中有几个,但它们几乎都是相同的):

if(issuer.compareTo("AE") == 0)
    {
        try
        {
        cardType = "American Express";
        firstDigit = 3;
        accountNumber = accountNumberGen(firstDigit);            
        memberSince = new java.util.Date();
        limit = setLimit(accountNumber);
        output.write(accountNumber + "|" + cardType + "|" +
                memberSince + "|" + limit + "\r\n");
        }
        catch(Exception e)
        {
            System.out.printf("An unexpected error occured. Sorry.\n"
                    + "American Express Constructor.");
            System.exit(0);

        }

所以,这就是我想要弄清楚的。下一步是“验证”标志。如果验证标志是从命令行传递的,我需要进入文件,读出其中存储的数据,进行任何更改,然后将其写回文件。再说一次,到目前为止还好。问题是这样的:

由于没有该类的实例,因此我无法调用该类中的方法。但是,Verification 方法不需要类的实例来完成其工作 - 它完全处理命令行参数以及读取/写入文件。那么,我该如何匿名调用类中的方法呢?我是否必须创建另一个验证类,或者只是将该方法移动到我的主类中?我对其中任何一个都有点犹豫,因为分配意味着应该有一个类来处理创建和验证。或者,另一种可能性是我处理这个问题的逻辑有缺陷?

此代码是一项正在进行的工作 - 异常将变得更加具体,并且任何打开的文件流都将被关闭,等等。

最佳答案

一个缩写:KISS :

是的,您可以做各种魔术,通过反射调用方法等。但是为什么要麻烦呢?

创建一个 main 方法,该方法采用第一个参数并创建一个 CreateHandlerVerificationHandler。两者都实现了具有以下方法的 Handler 接口(interface):

 void run(String[] args);

因此,切换后,您可以使用 handler.run(args) 调用新的处理程序,无论它是哪一个。

然后处理程序可以检查命令行以找出用户想要什么。

将通用代码(如加载/保存)移至辅助类中。保持方法简短(5-15 行)。每个方法应该做一件事。将复杂的任务转移到辅助方法中。

关于java - 在匿名类上使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7916174/

相关文章:

java - 用于在 Tomcat 上运行的 Java 应用程序的 SAML

node.js - 如何在另一个类中使用类函数?

ios - 创建一个 objective-c 全局类

java - 在内部类中找不到类型符号

c++ - 常规命名空间内匿名命名空间内的符号链接(symbolic link)

authentication - 允许在网站上进行匿名/未经身份验证投票的编程策略

java - Pax Web中的 jetty 错误处理程序注册错误

java - 如何使用apache common从CSV文件中读取列的值而不遍历java中的行

JavaFX:TableView,需要标题样式

java - java中如何将一个函数的返回值接收到另一个函数中