PrésentationComment importer une classe dans un programme Java en utilisant Javac?
J'utilise le terminal et Javac pour compiler et exécuter mes programmes java. Les programmes individuels fonctionnent bien. Cependant, lorsque je veux importer une classe dans mon programme Java principal, je reçois des erreurs.
Code source - ma classe (Name.java)
public class Name {
//Fields
private String firstName;
private String familyName;
//Constructors
public Name() {
firstName = "";
familyName = "";
}
public Name(String firstName, String familyName) {
this.firstName = firstName;
this.familyName = familyName;
}
//Methods
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setFamilyName(String familyName) {
this.familyName = familyName;
}
public String getFirstName() {
return firstName;
}
public String getFamilyName() {
return familyName;
}
public String getFullName() {
if (firstName.equals("") && familyName.equals("")) {
return "";
} else {
return firstName + " " + familyName;
}
}
@Override
public String toString() {
return "Name:[firstName=" + firstName + ", familyName=" + familyName + "]";
}
}
Main - NameDemo.java
import Name;
public class NameDemo {
public static void main(String[] args) {
/*
* See below evidence of how arrays can store elements of a custom reference
* type that you create (Name in this case), as well as both existing
* reference types (e.g. String) or primitive types (e.g. int), that you have
* previously worked with.
*/
//declare array to hold four Name objects
Name[] friends = new Name[4];
//create Name object and assign reference into array
Name joe = new Name("Joe", "Bloggs");
friends[0] = joe;
//create Name objects and assign reference directly into array
friends[1] = new Name("Fred", "Perry");
friends[2] = new Name("Diti", "Hammond");
friends[3] = new Name("Bulsar", "Raymond");
//loop through each element
for(int i = 0; i < friends.length; i++) {
//use accessor method to output full name of each
System.out.println(friends[i].getFullName());
}
//declare boolean used as a flag
boolean exists = false;
//loop through each Name object using a for-each loop (you will see more on this when we cover ArrayLists)
for (Name nm : friends) {
//check family name
if (nm.getFamilyName().equals("Smith")) {
exists = true;
}
}
//output result of search
if (exists) {
System.out.println("There is a person with family name of Smith");
} else {
System.out.println("There is not a person with family name of Smith");
}
//Checking output of toString
System.out.println("\n" + joe.toString());
}
}
Le problème
Les deux fichiers sont à l'intérieur du même répertoire. En plus de cela, j'ai importé la classe dans le code source du programme principal. Je vais ensuite essayer de compiler les deux.
import Nom;
javac Name.java
javac NameDemo.java
NameDemo.java:4: error: '.' expected
import Name;
^
NameDemo.java:4: error: ';' expected
import Name;
^
2 errors
Pourquoi ce produit, suis-je censé compiler la classe? ou la classe doit-elle se terminer par .class ou .java? ainsi que ceci est-ce un problème de syntaxe avec l'importation?
Vous ne pouvez pas importer des classes du package par défaut. Bonne nouvelle: vous n'en avez pas besoin car les deux classes y résident. Il suffit d'omettre l'instruction 'import'. – Marvin