java - Java 如何从子目录中的类创建对象

标签 java

我开始学习Java。
我被卡住的一部分是关于如何创建和使用源自其他类的对象。

目录结构:

/temp_dir/Java_code  
  Main.java  
  /java_db_code/  
    User_Table.java   

源代码是这样的。

// File: /temp_dir/Java_code/Main.java

package temp_dir.java_code; // Package configuration of this java file
import temp_dir.java_code.java_db_code.User_Table; // import other class

public class Main
{
  public static void main(String[] args)
  {
      int temp=5;

      // Create obj_user_table object from User_Table class located in package of temp_dir.java_code.java_db_code.User_Table, through its int parameterized constructor
      User_Table obj_user_table=new User_Table(temp);

      System.out.println(obj_user_table);
      // Expected: obj_user_table object

      System.out.println(obj_user_table.user_a);
      // Expected: 5
  }
}
// File: /temp_dir/Java_code/java_db_code/User_Table.java

package temp_dir.java_code.java_db_code;

public class User_Table
{
  public User_table(int a)
  {
    this.user_a=a;
  }
}

运行

cd /temp_dir/Java_code
javac -d . Main.java ./java_db_code/User_Table.java

错误

./java_db_code/User_Table.java:22: error: invalid method declaration; return type required
  public User_table(int a)
         ^
1 error

我在User_Table.java中写了public User_table(int a)作为构造函数
但我不知道为什么错误说 invalid method declaration;需要返回类型

最佳答案

方法名称区分大小写:User_tableUser_Table 不同(注意大写 T)。构造函数必须与类具有完全相同的名称,因此请使用 User_Table

不过,一旦你解决了这个问题,编译器就会提示另一件事:在你做的构造函数中

this.user_a=a;

但是user_a没有在你的类中声明,这会让编译器抛出错误。要解决这个问题,您只需在类里面声明它;因为您想访问类外部的字段(例如,在 Main.main() 中),所以将其设置为 public:

public class User_Table
{
  public int user_a;

  public User_table(int a)
  {
    this.user_a=a;
  }
}

作为建议,您应该真正考虑遵循 Java 命名和样式约定: - 你应该使用更多的空格:this.user_a = a, int temp = 5, obj_user_table = new - 类名使用 UpperCamelCase,没有下划线:UserTable - 方法和变量名称使用 lowerCamelCase,没有下划线:userA

这不会改变代码的功能,但会使其对其他 Java 用户更具可读性和标准。

关于java - Java 如何从子目录中的类创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691713/

相关文章:

java - 从网关调用的嵌套链回复多条消息

Java基础: Access variable out of the class

java - 抽象类继承具有不同参数类型的抽象方法

java - 如何使用 VTD-XML 以编程方式创建 xml?

Java DOM 解析器过滤掉 SOAP namespace 前缀?

java - 如何使 JFrame(带计时器)从另一个类打开另一个 JFrame

java - 简单对象类和记录

java - RecyclerView 错误膨胀 textView

Java Robot - 在 Mac 上键入 'a' 时出现问题

java - 使用通用测试数据扫描 Sonarqube 6.4 中 ruby​​ 文件的覆盖率数据