java - “reject”如何实例化类(class)

原文 标签 java c++

例如,

public class Test {
    Test() {
    if(xxx)//do some check here
        //reject instancing class test.
    }
}

我想我可以抛出一个异常(exception)来拒绝它,还有其他方法吗?
我不确定实例化的结果会被拒绝,但是我认为自然的方法是:
Test test = new Test();//return null here indicating instancing rejected.

我希望Java和C++都应具有此“拒绝”功能。

最佳答案

语言没有内置这种功能,但是您有两种标准的实现方式:

  • 第一个抛出异常。您在帖子中暗示了这一点。调用者将需要期待此异常,并准备对其进行处理。
  • 第二个是factory method。如果由于某种原因而无法实例化您的类,则它可能返回null。您的调用者需要准备好处理工厂方法返回的空值。

  • 在这两个选项之间进行选择并不容易。指导原则是,如果拒绝实例化是一种异常(exception)情况,例如编程或配置错误,然后执行异常路由。如果拒绝是例行的,例如由于某些资源暂时不可用,请采用工厂方法路线。当然,这些规则也有异常(exception),因此请使用最佳判断。

    相关文章:

    java - gradle-它如何决定使用哪个jar版本?

    java - 有没有办法用By连接一个变量。 Java中的Selenium Webdriver

    java - 如何设置使用sqlite4java的简单gradle项目?

    java - javax.xml.bind.UnmarshalException:意外元素(uri:“”,本地:“TestSubject”)。预期的元素是<{} Test>

    c++ - C++ 17依赖名称不是类型,可在C++ 14中使用

    c++ - 调试高内存使用率

    java - Hibernate运行随机查询

    c++ - 是否有GTKmm版本编译标志?

    c++ - 0,int()和int {}之间有什么区别?

    c++ - 什么在Windows Server 2003上使用了这么多未提交的 “private data”?