相关疑难解决方法(0)

Java:静态类?

我有一个充满实用功能的课程.实例化它的实例没有语义意义,但我仍然想调用它的方法.处理这个问题的最佳方法是什么?静态课?抽象?

java oop static class utility

128
推荐指数
4
解决办法
11万
查看次数

处理意外枚举值的首选方法是什么?

假设我们有一个接受枚举值的方法.在此方法检查该值是否有效之后,它将switch覆盖可能的值.所以问题是,在验证了值范围,处理意外值的首选方法是什么?

例如:

enum Mood { Happy, Sad }

public void PrintMood(Mood mood)
{
    if (!Enum.IsDefined(typeof(Mood), mood))
    {
        throw new ArgumentOutOfRangeException("mood");
    }

    switch (mood)
    {
        case Happy: Console.WriteLine("I am happy"); break;
        case Sad:   Console.WriteLine("I am sad"); break;
        default: // what should we do here?
    }
Run Code Online (Sandbox Code Playgroud)

处理default案件的首选方法是什么?

  • 发表评论 // can never happen
  • Debug.Fail()(或Debug.Assert(false))
  • throw new NotImplementedException() (或任何其他例外)
  • 其他一些我没有想过的方法

.net c# java language-agnostic enums

16
推荐指数
3
解决办法
3865
查看次数

在java中使用AssertionError和断言

我以标准的方式在Java中使用断言,在我的IDE中打开它们.所以他们不是生产发布的一部分.最近我一直在看代码示例,throw new AssertionError()我开始考虑AssertionError应该使用的情况而不是断言.

我的猜测主要区别在于断言的可选性,因此它们不会降低生产性能,因此它们可以在代码中经常出现,但修复用户报告的难以再现的错误则更难.

因为AssertionError,恰恰相反.

我还发现AssertionError在执行不应该得到的代码中更实用,而不是使用assert false //We should not be here.特别是如果需要返回值.例如:

int getFoo(AnEnum a){
    if (a == AnEnum.ONE)
       return bar();
    else if (a == AnEnum.TWO)
       return SOME_VALUE;
    //else
    assert false; //throw new AssertionError();
    return -1; //not necessary when usin AssertionError
}
Run Code Online (Sandbox Code Playgroud)
  • 我的推理是否正确?
  • 这两种方法的其他差异/用例/最佳实践/限制是什么?
  • 关于提供描述AssertionError- 应该提供还是仅仅是Error(和断言类型)的事实足以或多或少地确定在发现错误的情况下将提供堆栈跟踪?

java exception-handling assertions

13
推荐指数
2
解决办法
4741
查看次数

为什么java.util.Objects私有构造函数抛出assertionError

我观察到java.util.Objects有一个抛出AssertionError的构造函数.

 * @since 1.7
 */
public final class Objects {
    private Objects() {
        throw new AssertionError("No java.util.Objects instances for you!");
    }
 ...
Run Code Online (Sandbox Code Playgroud)

这是一个静态实用程序类,因此不需要实例.

我理解的一个可能原因是,开发人员正在尝试确保不创建此类的实例.作为任何人可以调用此构造函数的唯一方法是通过反射.

有没有其他理由拥有这种构造函数?

java

7
推荐指数
1
解决办法
3046
查看次数