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
das ist ok, es soll eine Endlosschleife. Es ist Lesen ein Leben telnet stream: github.com/THUFIR/TelnetConsole
Doh, ich dummerweise haben Klasse
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast Recht, es sollte funktionieren als method invocation conversion-Boxen ermöglicht die Konvertierung von
char
zuCharacter
.Dein code kompiliert problemlos auf meinem Rechner, so vermute ich, eine NetBean Problem.
In der Zwischenzeit können Sie die explizite Umwandlung von
char
zuCharacter
bitte den compiler. Dies sollte den trick tun:Es ist meine Schuld, ich denke, es ist weil ich eine Klasse
Character
.Nein, mit einer Charakter-Klasse gültig ist, und
ConcurrentLinkedQueue<char>
ungültig ist sowieso, wie Generika erwarten, dass ein class-Parameters (und der char ist nicht die Klasse).ok, ich benannte die Klasse
MyCharacter
und jetzt ist es autoboxes richtig. Ich Schätze die Antwort, es aufgefordert, mich in die richtige Richtung gehen. sollte ich die Antwort akzeptieren?ja, ich Feste der Warteschlange zu nehmen
Character
und nichtchar
, vermengt das umbenennen von Sachen.InformationsquelleAutor Menthos
Das problem war meine eigene Schöpfung. Im gleichen Paket war ein
Character
Klasse, die war die Schaffung, offensichtlich jetzt zu einem Namenskonflikt.Umbenennen der Klasse
MyCharacter
und überprüfen Sie, dass die Warteschlange verwendetCharacter
ist der Fehler behoben.InformationsquelleAutor Thufir