让 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 个问题:
首先是一个程序必须只有一个main
功能。你这里有两个。 Triangle
class 中的 main
函数应该被删除。
另一个问题是,要实际 实例化 一个 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
方法,该方法应该负责绘制您创建的特定实例。
所以我对编程很陌生,只是想在另一个 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 个问题:
首先是一个程序必须只有一个
main
功能。你这里有两个。Triangle
class 中的main
函数应该被删除。另一个问题是,要实际 实例化 一个 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
方法,该方法应该负责绘制您创建的特定实例。