Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 27 su 27
  1. #21
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    24
    esatto... è quello lo scopo dell'esercizio e grazie mille per il codice che mi hai postato... penso che lavorandoci un po' possa riuscire ad adattarlo....almeno spero

    grazie cmq a tutti per gli aiuti che mi date... siete veramente gentilissimi e disponibilissimi

  2. #22
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    24
    ci sto studiando su..
    ho capito un po' a cosa servono i generics...
    come si può modificare una classe o un metodo per renderlo di questo tipo.. ma nel mio caso... quando io ho l'istruzione
    codice:
    buffer = new Object[ dimensione ];
    come faccio a riscriverlo utilizzando i generics?

  3. #23
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    se quell'object veniva utilizzato prima delle 5.0 per rappresentare il massimo del polimorfismo e quindi sostituire i generics nella classe stessa devi sostituire Object col nome del tipo del generics, es

    buffer = new T[size];

    se nella classe è stato chiamato T il nome del tipo:

    class esempio<T>

    se invece Object rappresenta un templete non ricordo se si mettono o meno le <>facendo

    buffer = new Vector<String>()[100]

    o no

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  4. #24
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    24
    sei il mio salvatore....

    guarda ti faccio vedere quello che ho provato a scrivere:
    codice:
    public
    class
    MemoriaCircolare1<T>
    {
    	public
    	MemoriaCircolare1
    	(
    		int dimensione
    	)
    	{
    		this.dimensione = dimensione;
    		ingresso = 0;
    		uscita = 0;
    		buffer = new T[ dimensione ];
    	}
    
    	public
    	synchronized
    	void deposita 
    	(
    		T o
    	)
    	{
    		while ( pieno() )
    		{
    			try
    			{
    				this.wait();
    			}
    			catch ( InterruptedException ie ) {}
    		}
    		buffer[ ingresso ] = o;
    		ingresso = ( ingresso + 1 ) % dimensione;
    		this.notify();
    	}
    
    
    	public
    	synchronized
    	T
    	preleva()
    	{
    		while ( vuoto() )
    		{
    			try
    			{
    				this.wait();
    			}
    			catch ( InterruptedException ie ) {}
    		}
    		T valore = buffer[ uscita ];
    		uscita = ( uscita + 1 ) % dimensione;
    		this.notify();
    		return valore;
    	}
    
    	private
    	boolean
    	pieno()
    	{
    		return ( ( ingresso + 1 ) % dimensione == uscita );
    	}
    
    	private
    	boolean
    	vuoto()
    	{
    		return ( ingresso == uscita );
    	}
    
    	private int dimensione = 0;
    	private int ingresso = 0;
    	private int uscita = 0;
    	private T[] buffer = null;
    
    }
    ma mi da un errore in:
    codice:
    buffer = new T[ dimensione ];
    mi dice che :
    Cannot create a generic array of <T>
    cosa posso fare?

  5. #25
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    ho cercato e ho visto che questa cosa non sembra ammessa, ecco il testo:

    Arrays and generics

    The component type of an array object may not be a type variable or a parameterized type, unless it is an (unbounded) wildcard type. You can declare array types whose element type is a type variable or a parameterized type, but not array objects.

    // Cannot create a generic array of Basket<Apple>
    Basket<Apple>[] b = new Basket<Apple>[10]; // WRONG !!!!

    // Cannot create a generic array of Basket<Apple>
    Basket<?>[] b1 = new Basket<Apple>[10]; // WRONG !!!

    Basket<?>[] b2 = new Basket<?>[10]; // OK !

    public <T> T[] test() { // OK !
    return null;
    }

    // Cannot create a generic array of T
    public <T> T[] test1() { // WRONG !!!
    return new T[10];
    }
    Il testo è tratto dal documento di aiuto per prepararsi all'esame SCJP Tiger (Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0). Qui hai il link: http://java.boot.by/scjp-tiger/

    Prova a sostituire l'array con un vettore di tipo T(Vector<T> ecc...)

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  6. #26
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    24
    Prima di tutto volevo dirti che non finirò mai di ringraziarti per gli innumerevoli aiuti...

    cmq ho provato a fare come dicevi te... ma continua a darmi degli errori...
    te ti riferivi ad una cosa del genere...
    codice:
    buffer = new Vector<T>()[ dimensione ];
    ma mi da errori perchè la variabile buffer
    è definita così:
    codice:
    private T[] buffer = null;
    ma sinceramente... al momento non so come superare l'errore anche perchè nn so cos'è Vector ...
    cmq provo a cercare qualcosa su generics ed array
    ed.. ogni tanto verrò a cercare qui nel forum per vedere se un angioletto mi ha dato un altro aiuto...
    :rollo:

  7. #27
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Vector è una classe che reppresenta un vettore dinamico, tu gli butti dentro elementi e lui si ridimensiona solo.
    Sulla documentazione Sun trovi informazioni approfondite(cerca le così dette Collections, se conosci C++ sarebbero i Containers di Java)

    Un Vector dovresti crearlo così:

    Vector<T> buffer = new Vector<T>;

    aggiungo elementi con

    buffer.add

    li prendi con

    buffer.get

    La Doc Sun

    http://java.sun.com/j2se/1.5.0/docs/...il/Vector.html

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.