Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Riferimento a String Vs Riferimento a Oggetto

    Scusate per il titolo.
    Perchè il seguente codice stampa "String" e non "Object":
    codice:
    public class Test {
    	public void mioMetodo(Object o) {
    		System.out.println("Object");
    	}
    	public void mioMetodo(String s) {
    		System.out.println("String");
    	}
    	public static void main(String[] args) {
    		Test t = new Test();
    		t.mioMetodo(null);
    	}
    }
    Visto che il seguente codice stampa "no" e non "si":

    codice:
    public class Test2 {
    	public static void main(String args[]) {
    		String s = null;
    		if (s instanceof String)
    			System.out.println("si");
    		else
    			System.out.println("no");
    	}
    }
    Inoltre se ragruppo in un solo test entrambi i risultati mi da "String - no"

    codice:
    public class Test3 {
    	public void mioMetodo(Object o) {
    		System.out.print("Object - ");
    	}
    	public void mioMetodo(String s) {
    		System.out.print("String - ");
    		if (s instanceof String)
    			System.out.println("si");
    		else
    			System.out.println("no");
    	}
    	public static void main(String[] args) {
    		Test t = new Test();
    		t.mioMetodo(null);
    	}
    }
    Grazie

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

    Re: Riferimento a String Vs Riferimento a Oggetto

    Originariamente inviato da coccolino666
    Perchè il seguente codice stampa "String" e non "Object":
    null può essere assegnato a qualunque tipo di reference. Detto in altro modo, null può essere visto come il "sotto tipo" di tutti i tipi reference. Questo giusto per ricordare che può essere assegnato tanto ad un Object che un String.
    Ma tra quei due metodi quale è il più "specifico"? Quello con String, ovviamente. Quindi una invocazione con null usa questo ... non quello con Object.

    Se tu avessi avuto 3 metodi, uno con Object, un altro con String e un altro ancora con Number, la invocazione sarebbe stata "ambigua" (errore di compilazione). Perché String e Number sono più specifici di Object ma tra String e Number nessuno dei due è più specifico dell'altro!!

    Originariamente inviato da coccolino666
    Visto che il seguente codice stampa "no" e non "si":
    Il tipo null è un tipo specifico con un solo valore appunto null. Non è di tipo String né Object né altro .... quindi il test con instanceof dà "false".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie... già che mi trovo mi vado a guardare anche i programmi che sono nel tuo sito... sono all'inizio... quindi grazie due volte.

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.