2010-10-30 4 views
1

Je dois obtenir la taille de l'objet que le type je ne sais pas. C'est un modèle où je veux atteindre sth comme ceci:Taille de l'objet de type inconnu

void sth(T data) 
{ 
    System.out.println("Data size = ", sizeof(data)); 
} 

Comment puis-je faire cela en Java?

sizeof - comme un C sizeof;)

+4

Que voulez-vous dire par 'sizeof'? Java n'a normalement pas le concept de la "taille" d'un objet ou d'une référence. – Avi

+0

Qu'essayez-vous d'accomplir? C'est pourquoi, avez-vous besoin de connaître la taille d'un objet java? –

+0

J'ai dû vérifier la quantité de données envoyées via une autre bibliothèque. Je l'ai fait finalement en utilisant la sérialisation. – mmatloka

Répondre

0

Enfin, j'ai utilisé ce morceau de code:

private int getSize(Object data) { 
     int size = 0; 
     try { 
      ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
      ObjectOutputStream stream = new ObjectOutputStream(bout); 
      stream.writeObject(data); 
      stream.close(); 
      size = bout.size(); 
     } catch (IOException e) { 
      System.err.println("error: " + e.getMessage()); 
     } 
     return size; 
    } 
1

Il n'est pas une tâche facile. Vous devez utiliser Java Instrumentation.

Here est un exemple.

+0

mais cela fonctionnera-t-il lorsque T est double (pas double)? – mmatloka

+1

Ça ne peut pas être. Vous ne pouvez pas écrire une signature de méthode qui peut accepter n'importe quel type Java et lui fournir ce type si vous incluez les types primitifs. – EJP

Questions connexes