让 class 实例化在 Java 中工作

Getting class instantiation to work in Java

所以我对编程很陌生,只是想在另一个 class 中实例化一个 class,但我不断收到一条错误消息:Cannot Resolve Symbol。谁能告诉我问题出在哪个区域?

我的第一个 Class 看起来像这样:

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

第二个看起来像这样:

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

提前致谢

您需要实例化您的 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);

您所做的是尝试将 Triangle.draw() 中的 return 值分配给您的 Triangle 对象。由于 draw 是 void 而不是 return Triangle 类型,它会抛出错误。

Here 是一个很好的 Whosebug post,它展示了何时使用 static 方法的一个很好的例子。

至少有 2 个问题:

  1. 首先是一个程序必须只有一个main功能。你这里有两个。 Triangle class 中的 main 函数应该被删除。

  2. 另一个问题是,要实际 实例化 一个 class,您需要调用 class' 构造函数new 运算符,但您的 Triangle obj2 = new Triangle.Draw(5); 行不会执行此操作。相反,它尝试使用 static void 方法,该方法不会实例化或 return 任何东西。

您应该考虑如下更改您的 Triangle

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();

这为您提供了一个 public 默认构造函数以及一个 non-static draw 方法,该方法应该负责绘制您创建的特定实例。