Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115

    Package per semplificate System.out.println()

    Sto cercando di creare un package [ a scopo scolastico ]

    la classe qui sotto
    codice:
    import access.*;
    public class General {
    	public static void main(String[] args){
    		new Print("adfadfasd");
    		new Print("adsfa");
    	}
    }
    e questo e' il package
    codice:
    package access;
    
    public class Print{
    	
    	public Print(String s){
    		System.out.println(s);
    	}
    }
    Il codice funziona (la classe Print e' salvata nella sottodirectory della classe General) solo che vorrei riuscire a creare una scorciatoia a System.out.println("");. E il problema qui e' che devo sempre fare il new Print("");

    come faccio ad evitare di mettere anche il new prima di Print?

    Grazie da ora!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    defiendo il mentodo print statico non hai bisogno di istanziare la classe ogni volta che devi usarla.

    Ti direi di andare a guardare il significato del modificatore static

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    ti ringrazio molto, posto il codice funzionante per chiunque, come me, non ci e' riuscito alla prima

    Classe

    codice:
    import static access.Print.*;
    public class General {
    	public static void main(String[] args){
    		print("it works!");
    		
    	}
    }
    Package

    codice:
    package access;
    
    public class Print{
    	
    	public static void print(Object obj){
    		System.out.println(obj);
    	}
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    C'e una cosa di static che non mi e' tornata molto.

    Se dichiaro un metodo di una classe Static non servira' istanziare l'oggetto per chiamarlo ma mi bastera' chiamare Classe.metodo()

    quello che non mi torna e' che questo codice funziona!

    codice:
    import static access.Print.*;
    
    class Rectangle{
    	
    	int h;
    	int b;
    	
    	Rectangle(int h1, int b1){
    			h = h1;
    			b = b1;
    		}
    	int area(){
    		return b*h;
    		
    	}
    	
    	static int asd(int asd1){
    		return asd1;
    		
    	}
    }
    
    
    public class General {
    	public static void main(String[] args){
    		
    		Rectangle r = new Rectangle(3,6);
    		
    		print(r.area());
    		print(r.asd(20)); // <---- Che strano ..
    		print(Rectangle.asd(20));
    	}
    }
    /* OUTPUT:
     * 18
     * 20
     * 20*/
    Il secondo print() non dovrebbe girare ma il compilatore non mi dice niente.

    Solo eclipse mi dice che non dovrebbe essere scritto cosi!

    Come mai compila e gira? Questo non capisco...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    perchè pensi sia strano?
    Voglio dire se tu hai un metodo statico non è che è vietato chiamarlo da un'istanza (infatti il compilatore non si lamenta).

    Ti avevo detto ieri di guardare come si comporta static...
    allora dichiarare qualcosa static indica che è una proprietà come dire della classe e non dell'oggetto (semplificando molto): tutte le istanze della classe hanno a disposizione quel metodo e/o quelle variabili.
    Pensa che tu setti un valore a 20.
    Puoi avere 40 oggetti Rectangle, quei 40 oggetti vedranno quel valore static a 20 perchè guardano tutte allo stesso posto.
    Se tu provi a fare Rectangle.asd(40) e subito dopo leggi il valore dall'istanza vedi che ha l'ultimo valore da te assegnato, sia che tu accedi tramite un'istanza, sia che tu ci arrivi da una classe.
    Eclipse segnala warning indicandoti che stai cambiando una proprietà di classe, non di istanza (con tutto ciò che ne deriva)

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    Ti ringrazio molto per la tua spiegazione e ti chiedo di avere ancora un po' di pazienza

    ho googlato ieri ma ho trovato informazioni che non mi hanno aiutato molto, probabilmente sbaglio io l'approccio a questa cosa.

    E ancora non l'ho capita siccome non ti voglio stressare a rispiegarmi tutto sai mica dove lo trovo spiegato per bene?

    Grazie mille!

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    su thinking in java o java core 2 è spiegato abbastanza bene

    http://download.oracle.com/javase/tu...classvars.html

    è il tutorial della sun

    se hai domande siamo qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    115
    grazie mille!!

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.