eigentliche argument kann nicht konvertiert werden, indem method invocation conversion

Was ist der richtige Weg, um einen char zu charQueue was ist ein final ConcurrentLinkedQueue<Character> parameter?

Oracle scheint zu sagen, dass es sollte Arbeit:

Vom Typ char-Typ Charakter

http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.7

code:

package telnet;

import static java.lang.System.out;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.logging.Logger;

public class InputStreamWorker {

    private final static Logger LOG = Logger.getLogger(InputStreamWorker.class.getName());

    public InputStreamWorker() {
    }

    public void print(final InputStream inputStream,  final ConcurrentLinkedQueue<Character> charQueue) {

        Thread print = new Thread() {

            StringBuilder sb = new StringBuilder();

            @Override
            public void run() {
                try {
                    char ch = (char) inputStream.read();
                    sb.append(ch);
                    while (255 > ch && ch >= 0) {
                        charQueue.add(ch);
                        ch = (char) inputStream.read();
                        System.out.print(ch);
                    }
                } catch (IOException ex) {
                    out.println("cannot read inputStream:\t" + ex);
                }
            }
        };
        print.start();
    }
}

Entpacken von build-Ergebnisse:

-do-compile:
    [mkdir] Created dir: /home/thufir/NetBeansProjects/TelnetConsole/build/empty
    [mkdir] Created dir: /home/thufir/NetBeansProjects/TelnetConsole/build/generated-sources/ap-source-output
    [javac] Compiling 11 source files to /home/thufir/NetBeansProjects/TelnetConsole/build/classes
    [javac] /home/thufir/NetBeansProjects/TelnetConsole/src/telnet/InputStreamWorker.java:28: error: no suitable method found for add(char)
    [javac]                         charQueue.add(ch);
    [javac]                                  ^
    [javac]     method ConcurrentLinkedQueue.add(Character) is not applicable
    [javac]       (actual argument char cannot be converted to Character by method invocation conversion)
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.
    [javac] 1 error
Mögliche Duplikate stackoverflow.com/questions/18624769/...
Beachten Sie, dass, indem Sie char ch = (char) inputStream.read(); Sie nie ch < 0, so gibt es keinen Punkt in der ch >= 0 in Sie while-Schleife.
das ist ok, es soll eine Endlosschleife. Es ist Lesen ein Leben telnet stream: github.com/THUFIR/TelnetConsole
Doh, ich dummerweise haben Klasse Character die Ursache für die Verwirrung, denke ich. Ich bin ändern den Namen der Klasse.

InformationsquelleAutor Thufir | 2013-09-04

Schreibe einen Kommentar