Tema: Re: JAVA: nebeveikia galva
Autorius: Laimis
Data: 2012-06-19 12:58:37
ejs rašė:

> ir BABACH:
>
> Java exception occurred: java.lang.ClassCastException: java.lang.Byte
> cannot be cast to
> com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
>
> at com.google.zxing.qrcode.QRCodeWriter.encode(QRCodeWriter.java:69)
>
> Error in ==> encode_qr at 103 M_java = qr_writer.encode(message,
> BarcodeFormat.QR_CODE, props.size(2), props.size(1), qr_hints);
>
> Kaip kuriant Hashtable nurodyti ką ji saugo, arba kaip padaryti
> cast'ą priskiriant elemento reikšmę?


Aš matau:
http://grepcode.com/file/repo1.maven.org/maven2/net.sourceforge.plantuml/plantuml/7746/com/google/zxing/qrcode/QRCodeWriter.java?av=


if (hints != null) {
	ErrorCorrectionLevel requestedECLevel =
	(ErrorCorrectionLevel) hints.get(EncodeHintType.ERROR_CORRECTION);

	if (requestedECLevel != null) {
		errorCorrectionLevel = requestedECLevel;
	}
  }

Taigi, hashtable reikšmė turėtų būti ErrorCorrectionLevel tipas, o ne 
uint8. Todėl, kaip patarė trigras, arba perrašyčiau switch'ą, arba jo 
apskritai atsisakyčiau ir gal net pasinaudočiau reflection (viena, bet 
bjauroka eilutė):

import java.lang.reflect.Method;
<...>

ErrorCorrectionLevel.getDeclaredMethod(
	upper(props.quality)
).invoke(ErrorCorrectionLevel)