PDA

View Full Version : Si può utilizzare l'istruzione new anche così?


duiangy
12-05-2004, 11:35
:muro:
Ciao a tutti.
Naturalmente ho un problema: sto creando una chat in java e non so se questa istruzione è sbagliata o no, visto che l'ho trovata su una pagina web che spiega come si crea una chat:

(new ThreadServer(chatIn,chatOut,str)).start();

chatIn, chatOut e str sono delle variabili che dovrei passare al costruttore.

Ma dove mi salva la variabile nuova creata se la crea?

cn73
12-05-2004, 11:39
Si si può usare...nei casi in cui non ti serva un riferimento alla zona di memoria creata. La new crea una locazione di memoria . Quando tu scrivi

MyClass class = new MyClass().

crei una locazione di memoria e dici alla variabile (puntatore) class di mantenervi un riferimento. MA se non ti serve riferirti nel codice a class, è inutile dichiararlo.

duiangy
12-05-2004, 11:48
Grazie per la tua esauriente risposta, ma perchè allora netbeans me lo segna come errore?

ProvaChat/ChatServer.java [29:1] cannot resolve symbol
symbol : method start ()
location: class ProvaChat.ThreadServer
ThreadServer threadServer=new ThreadServer(chatIn,chatOut,str).start();

cn73
12-05-2004, 12:29
No no attenzione tu dichiari

ThreadServer threadServer=new ThreadServer(chatIn,chatOut,str).start();

Non puoi!! start() è un metodo!

dovrai fare:

ThreadServer threadServer=new ThreadServer(chatIn,chatOut,str) ;

e poi chiamare il metodo start()
threadServer.start()

duiangy
12-05-2004, 13:51
:D
Grazie mille...adesso provo a vedere se funziona...ma l'istruzione l'avevo già trovata così come te l'avevo scritta, e anche a me sembrava un po strano che il metodo start venisse applica subito.

grazie ancora...

cn73
12-05-2004, 13:59
Tu avevi trovato

(new ThreadServer(chatIn,chatOut,str)).start();

che è un altra cosa... questa è lecita, la dichiarazione no ;)

duiangy
12-05-2004, 14:15
Ok, ma anche se è lecita mi da un errore e questo è l'errore:

ProvaChat/ChatServer.java [29:1] cannot resolve symbol
symbol : method start ()
location: class ProvaChat.ThreadServer
(new ThreadServer(chatIn,chatOut,str)).start();
^
Note: C:\ChatJava\src\NewChat\ProvaChat\ChatServer.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
1 error
Errors compiling ChatServer.

Quindi ricapitolando come faccio?

cn73
12-05-2004, 15:30
Perchè ogni volta che rispondi in questo 3d mi arriva un messaggio privato con lo stesso testo??

Comunque, appurato che sintatticamente è corretto scrivere

(new ThreadServer(chatIn,chatOut,str)).start();


l'unico motivo è che la classe ThreadServer non abbia il metodo start().

Io immagino che sia una tua classe, che dovrebbe estendere Thread (che ha il metodo start()) ma non lo fa .

duiangy
12-05-2004, 15:49
Perchè non ho ancora capito come faccio a risponderti, visto che mi sono iscritta oggi.

Sì la classe ThreadServer l'ho creata io, e di fatti non ha il metodo start.
Lo creo e guardo se funziona, altrimenti chiederò ancora una volta il tuo aiuto.

Grazie

cn73
12-05-2004, 16:07
Basta premere il tasto RISPONDI ;)
Resto a disposizione, ma fra poco dovrò allontanarmi dal pc. Al limite ti rispondo domani mattina.

duiangy
17-05-2004, 13:08
Comunque non ho capito ancora perchè non funziona l'istruzione contenente il new.
Mi potresti scrivere un esempio per capirne il funzionamento?

cn73
17-05-2004, 13:31
Devi postare il codice delle classi altrimenti non ci capiamo...Hai fatto estendere Thread alla tua classe??

duiangy
17-05-2004, 14:15
Sto cercando di realizzare una chat in java. Ho realizzato 5 classi: chatserver, chatclient, threadServer, finestra e finestrachat. La chatserver è il programma che controlla se qualche client gli spedisce un user id cosicchè da utilizzare l'istruzione con il new. Chatclient sarebbe il programma che ogni utente che vuole connettersi alla chat deve aprire.Finestra e finestrachat sono le parti grafiche.Threadserver è la famosa classe che deve essere instanzioata con il new.

Per potermi aiutare hai compreso il mio lavoro o preferisci che ti invio gli allegati delle classi?
Ma ho paura che qualcuno potrebbe fregarmeli e utilizzarmeli...

cn73
17-05-2004, 14:39
Ma perchè devi venderli?:confused:

duiangy
17-05-2004, 15:40
Ma no non dovrei venderli o almeno non ci ricaverei nulla io, visto che sto facendo lo stage.
Ho paura che qualcuno me li potrebbe utilizzare e quindi la mia fitica andrebbe sfruttata.
Hai capito cosa intendo?

cn73
17-05-2004, 19:04
Al limite saresti di aiuto a qualcuno ;)

pholcus
18-05-2004, 10:00
class ServerThread extends Thread {

public ServerThread() {
//costruttore in cui passare chatin, chatout, str
}

public void run(){

System.out.println("Server started...");

}
}

public class Server {

public static void main(String[] args){

new ServerThread().start();

}

}



;)