CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java][IMPOSSIBRU] Nullpointer Exception

GreenKoala
GreenKoala
Niveau 5
16 août 2015 à 16:22:42

Heyhey hey tout le monde ! Java me pose une colle ! :pf:

J'utilise Batch pour dessiner un sprite. Cool. Je ne vais pas vous montrer tout le code, mais ça donne ça :

private Batch myBatch;
myBatch.draw(bobFrame, bob.getPosition().x*ppuX, bob.getPosition().y*ppuY,Popolon.getSize()*ppuX, Popolon.getSize()*ppuY);

Quand je compile on m'indique une NullPointer. Ah bah oui suis-je idiot j'ai pas instancié myBatch ! Alors je vais corriger ça de suite :

myBatch = new Batch();

Et là, sans pression, Java me dit : "Lol you can't instanciate Batch"

...

Wut ? Pourquoi ? :(

Et comment je suis censé régler une NullPointer sur un truc non instanciable Sherlock ? :hap:

(Je m'adresse au compilateur, pas à vous rassurez vous).

Tout ça pour dire que je ne comprends pas du tout ce que je suis censé faire là tout de suite, quelqu'un peut m'expliquer ? Quelqu'un connait Batch ? Quelqu'un sait ce qu'il se passe ? :noel:

Message édité le 16 août 2015 à 16:23:28 par GreenKoala
TintinMage
TintinMage
Niveau 10
16 août 2015 à 20:26:43

myBatch = new SpriteBatch(); :question:

GrandeGuerre
GrandeGuerre
Niveau 11
16 août 2015 à 20:42:00
private Batch myBatch = null;

Je sais pas si ça marcherait, ni même si c'est propre, mais je sais qu'en C# ça résout souvent ce genre d'erreurs.

Darkandgel
Darkandgel
Niveau 10
16 août 2015 à 20:56:08

On peut avoir le *vrai* message d'erreur ?
Et le package de la classe Batch que tu utilises ?

Bunyan
Bunyan
Niveau 17
16 août 2015 à 22:59:04

Prends l'habitude de faire un copié/collé des exceptions, stacktrace... au lieu de juste donner une interprétation :)
Il arrive parfois que celle-ci soit fausse.

Bon, je ne connais pas Batch, mais l'un des rares moments où une instanciation est refusée, c'est que la classe est en singleton. Un autre serait que la classe soit totalement abstraite pour que seules les filles soient manipulées.

@GrandeGuerre : en Java, faire ce que tu préconises réalisera justement une NullPointerException :)

DirectX11
DirectX11
Niveau 6
16 août 2015 à 23:26:30

Constructeur par defaut en privé, et/ou surement une method static pour avoir une instance.
bref regarde les constructeurs dispo :ok:

Darkandgel
Darkandgel
Niveau 10
16 août 2015 à 23:37:14

Ou alors une classe abstraite.
Bref dans tous les cas, sans plus d'infos, pas moyen d'etre plus précis

Gleuh
Gleuh
Niveau 10
17 août 2015 à 00:17:08

Batch est surement une classe protected nan? Tu dois surement utiliser une classe qui hérite de celle-ci.
Tu vois un peu comme en utilisant les FileInputStream au lieu de InputStream, car on ne peux pas instancier InputStream : c'est une classe mère en protected

florent6262100
florent6262100
Niveau 9
17 août 2015 à 07:28:33

private Batch myBatch = new Batch();

Et la plupars du temps, tu doit le réinstancié dans un start ou autre, comme en C# :-p

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment