Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Problema con i tipi generici! :(

    Salve raga. Il mio problema è che quando richiamo un metodo generico non me lo riconosce!

    codice:
    public class TestArray
    {
    	public static void main (String[] args)
    	{
    		int[] array = new int[6];
    		
    		java.util.Scanner scanner = new java.util.Scanner (System.in);
    		
    		for (int i = 0; i < array.length; i++)
    		{
    			System.out.print ("Inserisci elemento di posto " + i + ": ");
    			array[i] = scanner.nextInt();
    		}
    		
    		System.out.println ("\n\n");
    		
    		Array.print (array);
    		System.out.println ("\n\n");
    		
    		Array.orderAsc (array);
    		Array.print (array);
    		System.out.println ("\n\n");
    		
    		Array.orderDesc (array);
    		Array.print (array);
    	}
    }
    codice:
    public class Array
    {
    	public static < E extends Comparable < E > > void orderAsc (E[] array)
    	{
    		for (int i = 0; i < array.length - 1; i++)
    			for (int j = i + 1; i < array.length; j++)
    				if (array[i].compareTo (array[j]) > 0)
    				{
    					E tmp = array[i];
    					array[i] = array[j];
    					array[j] = tmp;
    				}
    	}
    	
    	public static < E extends Comparable < E > > void orderDesc (E[] array)
    	{
    		for (int i = 0; i < array.length - 1; i++)
    			for (int j = i + 1; i < array.length; j++)
    				if (array[i].compareTo (array[j]) < 0)
    				{
    					E tmp = array[i];
    					array[i] = array[j];
    					array[j] = tmp;
    				}
    	}
    	
    	public static < E > void print (E[] array)
    	{
    		for (int i = 0; i < array.length; i++)
    			System.out.print (array[i] + "\n");
    	}
    }
    Mi dice: <E>print(E[]) cannot be applied to (int[])... tutte le volte che richiamo un metodo generico, ma cosa sbaglio??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema con i tipi generici! :(

    Originariamente inviato da Dreamer89
    Mi dice: <E>print(E[]) cannot be applied to (int[])... tutte le volte che richiamo un metodo generico, ma cosa sbaglio??
    I "generics" hanno a che fare solo ed esclusivamente con i tipi "reference", mai con i tipi primitivi. Dovresti usare Integer[], non int[].
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Problema con i tipi generici! :(

    Originariamente inviato da andbin
    I "generics" hanno a che fare solo ed esclusivamente con i tipi "reference", mai con i tipi primitivi. Dovresti usare Integer[], non int[].
    Come posso convertire dei tipi primitivi in oggetti Integer, Double ecc...? Ho provato aggiungendo ad esempio (Integer) ma non funziona...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Problema con i tipi generici! :(

    Originariamente inviato da Dreamer89
    Come posso convertire dei tipi primitivi in oggetti Integer, Double ecc...? Ho provato aggiungendo ad esempio (Integer) ma non funziona...
    Integer[] array = new Integer[6];

    Poi sfruttando l'auto-boxing di Java 5:

    array[i] = scanner.nextInt();

    Ovvero, non cambia nulla nella assegnazione del valore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    Re: Re: Re: Re: Problema con i tipi generici! :(

    Originariamente inviato da andbin
    Integer[] array = new Integer[6];

    Poi sfruttando l'auto-boxing di Java 5:

    array[i] = scanner.nextInt();

    Ovvero, non cambia nulla nella assegnazione del valore.

    Ma io intendevo convertirli senza doverli leggere da tastiera. Ad esempio, ho un valore int e vorrei convertirlo in Integer, come faccio?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Re: Re: Problema con i tipi generici! :(

    Originariamente inviato da Dreamer89
    Ma io intendevo convertirli senza doverli leggere da tastiera. Ad esempio, ho un valore int e vorrei convertirlo in Integer, come faccio?
    Integer i = 123;

    Ripeto che da Java 5 c'è l'autoboxing/unboxing: dove è richiesto un tipo "wrapper" si può assegnare il corrispondente tipo primitivo e viceversa. E il compilatore si preoccuperà di generare il codice per fare la conversione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Ok, ma se io il valore che intendo convertire in Integer è salvato in una variabile int? o_O

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dreamer89
    Ok, ma se io il valore che intendo convertire in Integer è salvato in una variabile int? o_O
    int n = 10;
    Integer i = n;
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    int[] v = new int[6];
    Integer[] array = v;

    Ma scusa cosa c'è di sbagliato in questo? A me da errore...

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dreamer89
    int[] v = new int[6];
    Integer[] array = v;

    Ma scusa cosa c'è di sbagliato in questo? A me da errore...
    Questo no. Un array di int non è-un array di Integer (e nemmeno viceversa)! Un array è un oggetto, quindi per i tipi reference bisogna rispettare le regole della ereditarietà e del polimorfismo.

    codice:
        Object
         / \
        /   \
       /     \
    int[]   Integer[]
    Quindi è chiaro che int[] e Integer[] non sono in relazione tra di loro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2025 vBulletin Solutions, Inc. All rights reserved.