gpt4 book ai didi

java - 如何正确使用构造函数?

转载 作者:行者123 更新时间:2023-12-01 22:38:45 25 4
gpt4 key购买 nike

嗨,我是 Java 新手,构造函数仍然让我感到困惑。我正在尝试创建和枚举如下:

public enum SCardErrors
{
SCARD_S_SUCCESS(0x0L),
SCARD_E_SHARING_VIOLATION(0x8010000BL),
SCARD_E_NO_READERS_AVAILABLE(0x8010002EL),
SCARD_E_READER_UNAVAILABLE(0x80100017L);

private int intValue;
private static java.util.HashMap<Integer, SCardErrors> mappings;
private static java.util.HashMap<Integer, SCardErrors> getMappings()
{
if (mappings == null)
{
synchronized (SCardErrors.class)
{
if (mappings == null)
{
mappings = new java.util.HashMap<Integer, SCardErrors>();
}
}
}
return mappings;
}

private SCardErrors(int value)
{
intValue = value;
getMappings().put(value, this);
}

public int getValue()
{
return intValue;
}

public static SCardErrors forValue(int value)
{
return getMappings().get(value);
}
}

从上面给出的错误是构造函数 SCardErrors(long) 未定义以下行: SCARD_S_SUCCESS(0x0L), SCARD_E_SHARING_VIOLATION(0x8010000BL), SCARD_E_NO_READERS_AVAILABLE(0x8010002EL), SCARD_E_READER_UNAVAILABLE(0x80100017L);

我尝试添加 SCARD_S_SUCCESS(0x0L){ }对于他们每个人,但它没有修复错误。我也尝试将它们添加为参数,但这不起作用。有人可以帮忙吗?

最佳答案

你只有一个接受int的构造函数:

private SCardErrors(int value)

...但您尝试使用 long 类型的参数来调用它:

SCARD_S_SUCCESS(0x0L)

您要么需要更改构造函数以接受 long - 并且可能还需要更改字段类型 - 或者将参数更改为 int 值。并非所有参数都可以表示为 int (例如 0x80100017L) - 但如果您只关心涉及的位,并且不介意值变为负数,则可以转换为 int 并且仍然具有相同的 32 位...

关于java - 如何正确使用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26512008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com