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

    nome classe che ci sta chiamando

    Salve a tutti,
    come capire qual'è la classe che ci sta chiamando?

    public class ciao{

    public static void main(String[] args) {

    bello Stampo= new bello();

    int a=c;
    Stampo.stampa();
    }
    }


    ---------------------------------------

    public class bello{

    public void stampa(){

    String s="";//esiste un metodo che metto all'interno della stringa 's',dove mi ritorni il nome della //classe che mi sta chiamando? (cioè in questo caso 'ciao').
    System.out.print(s);

    }


    Grazie a tutti ciao.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Non credo esista qualcosa del genere... ma forse mi sbaglio ^^'
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    L'unica cosa è modificare il metodo:
    codice:
    public class ciao{
    
       public static void main(String[] args) {
    
          bello Stampo= new bello();
    
          int a=c;
          Stampo.stampa(new ciao());
       }
    }
    
    
    ---------------------------------------
    
    public class bello{
    
       public void stampa(Object obj){
    
       String s= obj.getClass().getName();
       System.out.print(s);
    
    }
    Non ci sono alternative...

    L'esempio che ho postato sopra è una forzatura, ma si poteva, più semplicemente, passare direttamente una stringa al metodo.

    Detto questo, dove stà l'utilità di questa manovra?

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    A partire da Java 5 è possibile usare il metodo getStackTrace() di Thread per ottenere lo "stack trace" (a dire il vero è possibile ottenerlo anche in Java 1.4 ma in altro modo, tramite una eccezione).

    codice:
    public class Prova
    {
        public static void main (String[] args)
        {
            Test t = new Test ();
            t.test ();
        }
    }
    
    class Test
    {
        public void test ()
        {
            StackTraceElement[] steArr = Thread.currentThread ().getStackTrace ();
    
            int i = 0;
    
            while (!steArr[i].getClassName ().equals (getClass ().getName ()))
                i++;
    
            System.out.println ("La classe chiamante e`: " + steArr[i+1].getClassName ());
        }
    }
    Il ciclo while che ho usato, in teoria non dovrebbe servire, sempre in teoria basterebbe usare un offset preciso nell'array. Peccato che un offset costante non vada bene perché c'è una leggera differenza nello stack trace tra Java 5 e Java 6 (per essere precisi, in Java 5 vengono elencati 2 metodi di Thread al top dello stack trace mentre in Java 6 solo 1).
    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.