【问题标题】:static constants return instance of specific class in Flex?静态常量返回 Flex 中特定类的实例?
【发布时间】:2020-07-23 19:16:38
【问题描述】:

这就是我的意思。 假设我有一个 ErrorMessages 类,它将我所有的错误消息都保存为静态常量。所以我可以像ErrorMessages.PASSWORD_INVALIDErrorMessage.PASSWORD_TOO_SHORT 一样访问它们。我想知道是否有可能拥有单独的类来保存这些常量的子集并像ErrorMessages.PASSWORD.INVALIDErrorMessages.PASSWORD.TOO_SHORT 等那样访问它们。 通过这种方式,我可以更加结构化的静态结构,并且更容易使用自动完成功能。 我尝试了几种不同的方法,但不知道这是否可行..

【问题讨论】:

    标签: apache-flex


    【解决方案1】:

    在静态类中将它们声明为 const 对象 - 但是你不会让它们自动完成。

    public class ErrorMessages
    {
      public static const PASSWORD:Object = {
         INVALID:"invalid password",
         TOO_SHORT:"minimum 6 chars required",
         TOO_LONG:"100 chars: r u sure?"
      };
      public static const FILE:Object = {
         NOT_FOUND:"No such file",
         READ_ONLY:"it is readonly",
         SOMETHING_ELSE:"something else"
      };
    }
    
    trace(ErrorMessages.PASSWORD.INVALID);
    

    如果自动完成很重要,请创建一个专用的com.domain.errors 包,并为该包中的不同类别的错误(如密码、文件等)声明不同的类。现在在这些类中适当地声明公共静态常量。

    【讨论】:

    • 我明白了...我确实想获得自动完成功能..我想要这个的最初原因之一是我可以做 ErrorMess 。通过 。 Inv 获取 ErrorMessage.PASSWORD.INVALID。目前,如果我想获得 ErrorMessage.PASSWORD_INVALID,我必须输入 PASSWORD_INV 才能获得正确的结果。我想把它保存在一个文件中。我只需要少数几个常量,并认为为它们设置单独的文件可能有点过头了.. 感谢您的建议
    【解决方案2】:

    或者如果你想保留一个类,你可以在你的错误类中定义类。您可能希望这些文本来自属性文件。因此,您可以利用 resourceManager 实例并从特定资源包中获取文本。

    -- http://riageeks.com

    【讨论】:

    • 我想保留一个文件。我尝试在我的 ErrorMessage 类中定义类,但我找不到通过 ErrorMessage 类的静态变量公开此类的方法,以便我可以访问静态常量。我试过这样的包 com.domain.data.type { public class ErrorMessages{ public static const PASSWORD.... } } class PasswordError { public static const INVALID:String = "invalid password";我只是不知道如何通过 ErrorMessage.PASSWORD 访问 PasswordError 的静态常量
    【解决方案3】:

    这就是我最终要做的事情

    package com.domain.data.type {
      public class ErrorMessages {
        public static function get PASSWORD:PasswordErrorMessages { return new PasswordErrorMessages(); }
        }
    }
    class PasswordErrorMessages {
      public function get INVALID():String  { return "invalid password"; }
    }
    

    这样我可以得到我想要的行为:带有自动完成功能的 ErrorMessages.PASSWORD.INVALID。它不像我希望的那样干净..但我想这样就可以了。

    【讨论】:

    • 我希望您每次阅读错误消息时都意识到您正在创建一个新对象。
    • 是的,我将其更改为静态变量。
    猜你喜欢
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 2013-11-16
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多