2016-09-23 2 views
0
public class Sample1 { 
    public String name; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public static void main(String[] args) { 
     Sample1 s1= new Sample1(); 
     s1.setName("Abc"); 
    } 
} 


public class Sample2 { 
    public static void main(String[] args) { 
     Sample1 n2= new Sample1(); 
     System.out.println(n2.getName()); 
    } 
} 

Ich habe zwei Klassen Sample1 und Sample2 zwei. Ich bin die Zuordnung Zeichenfolge Wert mit Setter-Methode und Rückgabe in einer anderen Klasse mithilfe von Getter-Methode, aber eine Ausgabe ist Null. Warum ist null eine Ausgabe und wie erhält man einen String-Wert von einem Aufruf zu einer anderen Klasse?Wie String-Wert eine Klasse in Java zu einer anderen Klasse aufgerufen wird

+0

Ähnliche: https: //stackoverflow.com/questions/ 39659795/how-to-call-string-eine-Klasse-zu-einer-anderen-Klasse-Verwendung-Getter-and-Setter-Methode – Venkat

+2

Sie haben zwei 'Hauptfunktionen? – AhmadWabbi

+0

Bitte formatieren Sie Ihren Code beim Posten. Es ist * wirklich * schwer ohne Einrückung zu lesen. –

Antwort

1

Ich denke, du hast die Hauptmethode falsch verstanden, vielleicht irre ich mich, aber nur eine Hauptmethode wird ausgeführt.

Wenn Sie Sample2.main ausführen - bei Sample1 legen Sie keinen Namen so, dass es null ist (Sample1.main wird nie ausgeführt).

Wenn Sie Sample1.main ausführen - Sample1 erstellt und einen Namen zugewiesen.

Also entweder den Namen im Sample2.main zuweisen:

public static void main(String[] args) { 
    Sample1 n2= new Sample1(); 
    n2.setName("xxx"); 
    System.out.println(n2.getName()); 
} 

oder tun es über Konstruktor.

public class Sample1 { 
    private final String name; 
    public String getName() { 
    return name; 
    } 
    public Sample1(String name) { 
    this.name = name; 
    } 
} 
+0

Ich möchte keinen String-Wert in der Sample2-Klasse festlegen, muss String-Wert nur in Sample1 zuweisen, danach brauche ich diesen String-Wert in Sample2-Klasse –

+0

Dann müssen Sie diesen Wert irgendwo zwischen den Läufen speichern. – talex

+0

müssen Sie es dann im Konstruktor von Sample1 tun. public Sample1() {this.name = "xxx";} –

1

Betrachten Sie den Code:

Sample1 n2= new Sample1(); 
System.out.println(n2.getName()); 

Hier ist der Name nicht gesetzt, so müssen Sie den Namen ein, bevor Sie den Namen bekommen.

Sample1 n2= new Sample1(); 
n2.setName("name goes here"); 
System.out.println(n2.getName()); 

Sie können aber auch parametrisierte Konstruktor in der Sample1 Klasse versuchen, Zugang wie in sample2 Klasse:

Sample1 n2= new Sample1("your name goes here"); 
System.out.println(n2.getName()); 

Der Konstruktor wird:

public Sample2(String name){ 
this.name = n; 
} 

3, was Sie Methode hinzufügen in der Sample1-Klasse und greifen Sie darauf in der Sample2-Klasse zu.

Ich will nicht String-Wert in Sample2 Klasse, String-Wert in Sample1 müssen nur gesetzt zuweisen, danach muss ich diese Zeichenfolge Wert in Sample2 Klasse

public class Sample1 { 
    private String _name; 
    public String getName() { 
     return _name; 
    } 
    private setName(String name) { 
     _name = name; 
    } 
    public SetNameHelper(){ 
     setName("somestring");//You will be setting the name in Sample 1 
    } 
} 


public class Sample2 { 
    public static void main(String[] args) { 
     Sample1 n2= new Sample1(); 
     n2.SetNameHelper(); 
     System.out.println(n2.getName());//You will be getting Name in Sample 2 class 
    } 
} 
+0

Es wird angezeigt und Fehler bei SetName ("Somestring"); Linie –

+0

@Smileysmile können Sie bitte die Fehlerdetails teilen – Venkat

0
class Sample2 { 

Sample1 sample1; 

Sample2(Sample1 sample){ 
    this.sample1 = sample; 
} 

private String getSample1Name() { 
    return this.sample1.getName(); 
} 

public static void main(String[] args) { 

    Sample1 sample1 = new Sample1(); 
    sample1.setName("Abc"); 

    Sample2 n2= new Sample2(sample1); 
    System.out.println(n2.getSample1Name()); 
} 

}

+0

Vielen Dank, aber meine Anforderung ist, ich habe die einzige Möglichkeit, den String-Wert in der Sample1-Klasse nur diesen Wert in der Sample2-Klasse zu setzen. –

+0

Sample1 und Sample2 sind zwei verschiedene JAVA-Programme, zwischen denen Sie keine Daten austauschen können, solange Sie keine erweiterten Konzepte wie Threads oder Socket programmieren. –

+0

Meine Anforderung benötigt sample1 class String-Wert in Sample2-Klasse, Wie ist es möglich? –

0

Ich glaube, ich verstehe Sie Verwirrung: Sie verwechseln eine main Funktion für eine constructor!

Ich bemerkte, dass Sie in jeder Klasse eine main-Funktion erstellt haben, deren einzige Rolle es ist, eine Instanz zu erstellen und die internen Felder der Klasse festzulegen. Es ist wahrscheinlich ein Konstruktor, nach dem du gesucht hast.

Hier ist der Deal:

  • Ein Hauptverfahren der Einstiegspunkt eines Programms ist. Es bleibt nur, um mich laufen zu lassen: beginne, diesen Code auszuführen. Sie benötigen wahrscheinlich (99,9% des Falles) nur eine main Methode pro Projekt.
  • Ein Konstruktor ist eine Methode, die eine Instanz von jeder Klasse erstellt, d. H.ein Objekt, das Sie an anderer Stelle in Ihrem Code bearbeiten können. Informieren Sie sich über Object-Oriented Programming

So, hier ist dein Beispiel, feste (glaube ich), in einer Weise, die sample1 Wert in eine sample2 bringen kann, wie Sie sagen:

public class Sample1 { 

    public String name; 
    public String Sample1(String initialName){ 
     this.name = initialName; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

public class Sample2{ 
    public String name; 
    public String Sample2(String initialName){ 
     this.name = initialName; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

public class ProgramEntryPoint{ 
    public static void main(String[] args) { 
     Sample1 s1 = new Sample1("a name"); 
     System.out.println("Initial sample1 name: " + s1.getName()); 
     s1.setName("a New Name!"); 
     System.out.println("New sample1 name: " + s1.getName()); 

     Sample2 s2 = new Sample2(s1.getName()); 
     System.out.println("Initial sample2 name: " + s2.getName()); 
    } 
} 

die, einmal Sie laufen ProgramEntryPoint.main, gedruckt wird:

Initial sample1 Name: der Name
New sample1 Name: ein neuer Name!
Erster Name von sample2: ein neuer Name!


Das ist alles einfache Java-Zeug, sollten Sie ein paar grundlegende Anleitungen lesen, (die, die auf Oracle-Website sind ein guter Anfang)

+0

Meine Anforderung benötigt sample1 class String-Wert in Sample2-Klasse, Wie ist es möglich? –

Verwandte Themen