Comment créer un objet à partir de la classe sous-répertoire en Java

Youngmin Park:

J'ai commencé à étudier Java.
Une partie je me suis coincé est sur la façon de créer et objet l' utilisation qui est originaire d'autre classe.

Structure de répertoire:

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

les codes sources sont comme ceux-ci.

// 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;
  }
}

Courir

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

Erreur

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

Je l' ai écrit public User_table(int a)en User_Table.javatant que constructeur ,
mais je ne sais pas pourquoi l' erreur dit queinvalid method declaration; return type required

eric.m:

Les noms méthodes sont sensibles à la casse: User_tablen'est pas la même chose que User_Table(notez le T capital). Le constructeur doit avoir exactement le même nom que la classe, donc à utiliser User_Table.

Pourtant, le compilateur se plaindra une autre chose une fois que vous résoudre ce problème: dans le constructeur que vous faites

this.user_a=a;

Mais user_anon déclarée dans votre classe, qui fera le compilateur une erreur. Pour résoudre ce problème, il vous suffit de le déclarer dans la classe; puisque vous voulez accéder au champ extérieur de la classe (par exemple, en Main.main()) faire public:

public class User_Table
{
  public int user_a;

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

En guise de recommandation, vous devriez vraiment envisager de suivre Java Naming et conventions de style: - Vous devez utiliser plus les espaces blancs: this.user_a = a, int temp = 5, obj_user_table = new- Les noms de classes utilisent UpperCamelCase, sans underscores: UserTable- Méthode et les variables utilisent lowerCamelCase, sans underscores:userA

Cela ne changera pas la fonctionnalité du code, mais il le rendre plus lisible et la norme pour les autres utilisateurs Java.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=333244&siteId=1
conseillé
Classement