У меня есть код, над которым я работаю для создания алгоритма CRC, зависящего от переданного полинома, и строка s
, которая содержит "crc8" или "crc16" или "crc32".
Классы CRC8
, CRC16
и CRC32
расширяют класс CRC
и реализуют интерфейс HashAlgorithm
. У каждого из них есть конструктор CRCx(int polynomial)
.
Моя проблема в том, что я получаю эту ошибку на всех 3 строках getConstructor ():
Type mismatch:
cannot convert from Constructor<HashFactory.CRC16>
to Constructor<HashFactory.CRC>
Может кто-нибудь помочь объяснить, почему и помочь мне это исправить?
int polynomial; // assign from somewhere
Constructor<CRC> crc = null;
if ("crc8".equals(s))
{
crc = CRC8.class.getConstructor(Integer.TYPE);
}
if ("crc16".equals(s))
{
crc = CRC16.class.getConstructor(Integer.TYPE);
}
if ("crc32".equals(s))
{
crc = CRC32.class.getConstructor(Integer.TYPE);
}
if (crc != null)
{
CRC crcInstance = crc.newInstance(polynomial);
return (HashAlgorithm) crcInstance;
}