Je suis donc très novice en programmation et j'essaie simplement d'instancier une classe dans une autre classe, mais j'obtiens toujours une erreur qui dit: Cannot Resolve Symbol. Quelqu'un pourrait-il me dire dans quel domaine se situe le problème?

Ma première classe ressemble à ceci:

public class Triangle
{
    public static void main(String[] args)
    {
    }
    public static void Draw (int num)
    {
        System.out.print("*");
    }
}

Le second ressemble à ceci:

public class Lab01
{
    public static void main(String[] args)
    {
           Triangle obj2 = new Triangle.Draw(5);
    }
}

Merci d'avance

-1
user3178556 5 janv. 2016 à 07:08

2 réponses

Meilleure réponse

Il y a au moins 2 problèmes:

  1. La première est qu'un programme ne doit avoir qu'une une main fonction. Le vôtre en a deux. La fonction main de votre classe Triangle doit être supprimée.

  2. L'autre problème est que, pour instancier une classe, vous devez appeler le constructeur de la classe avec l'opérateur new, mais votre ligne Triangle obj2 = new Triangle.Draw(5); ne le fait pas. Au lieu de cela, il essaie d'utiliser une méthode static void, qui n'instancie ni ne renvoie rien.

Vous devriez envisager de modifier votre Triangle comme suit:

public class Triangle
{
    public Triangle() {
        System.out.println("Constructing triangle instance");
    }

    public void draw() {
        System.out.println("Drawing triangle instance");
    }
}

// using the class
Triangle t = new Triangle();
t.draw();

Cela vous donne un constructeur par défaut public et également une méthode draw non statique qui devrait prendre soin de dessiner l'instance spécifique que vous avez créée.

2
code_dredd 6 janv. 2016 à 20:33

Vous devez instancier votre objet Triangle

//remove the static modifier if using below
Triangle obj2 = new Triangle();
obj2.draw(5);


//since your method is static you can just call it from the class also.
Triangle.draw(5);

Ce que vous faisiez, c'était d'attribuer la valeur de retour de Triangle.draw() à votre objet Triangle. Puisque draw est void et ne renvoie pas de type Triangle, il renvoie l'erreur.

Voici un bon article de stackoverflow qui montre un excellent exemple d'utilisation de { {X0}} méthodes.

0
Community 23 mai 2017 à 12:23