$ cat Const.java
public class Const {
String Const(String hello) {
return hello;
}
public static void main(String[] args) {
System.out.println(new Const("Hello!"));
}
}
$ javac Const.java
Const.java:7: cannot find symbol
symbol : constructor Const(java.lang.String)
location: class Const
System.out.println(new Const("Hello!"));
^
1 error
risposta
Quello che hai definito non è in realtà un costruttore, ma un metodo chiamato Const
. Se è stato modificato il codice per qualcosa di simile, che avrebbe funzionato:
Const c = new Const();
System.out.println(c.Const("Hello!"));
Se nessun costruttore specifica è definito esplicitamente, il compilatore crea automaticamente un costruttore senza argomenti.
Il costruttore non può restituire un valore. Questo è definitivo. Ha lo stesso senso: non può avere un tipo di ritorno ed è per questo che stai ricevendo l'errore di compilazione. Si può dire che il valore di ritorno è sempre implicitamente l'oggetto creato dal costruttore.
realtà di costruzione in una classe Java non può restituire un valore che deve essere il seguente modulo
public class Test {
public Test(/*here the params*/) {
//this is a constructor
//just make some operations when you want to create an object of this class
}
}
controllo tali link http://leepoint.net/notes-java/oop/constructors/constructor.html http://java.sun.com/docs/books/tutorial/java/javaOO/constructors.html
Un costruttore non può avere un valore di ritorno come una funzione "normale". Viene chiamato quando viene creata un'istanza della classe in questione. Viene utilizzato per eseguire l'inizializzazione di tale istanza.
I costruttori non possono restituire un valore; restituiscono l'oggetto costruito, per così dire.
Si ottiene un errore perché il compilatore sta cercando un costruttore che accetta una stringa come argomento. Dato che hai fatto non dichiarare un costruttore, l'unico costruttore disponibile è il costruttore predefinito che non accetta alcun argomento.
Perché dico che non hai dichiarato un costruttore? Perché non appena dichiari un valore/tipo di ritorno per il tuo metodo, non è più un costruttore ma un metodo normale.
Dal Java Documentation:
Una classe contiene costruttori che sono invocato per creare oggetti dal progetto di classe. Le dichiarazioni del costruttore assomigliano alle dichiarazioni del metodo , tranne per il fatto che utilizzano il nome della classe e non restituiscono il tipo .
Se si elabora ciò che si sta cercando di raggiungere qualcuno potrebbe essere in grado di dirti come è possibile raggiungere tale obiettivo.
public class Const {
private String myVar;
public Const(String s) {
myVar = s;
}
public String getMyString()
{
return myVar;
}
public static void main(String[] args) {
Const myConst = new Const("MyStringHere");
System.out.println(myConst.getMyString());
}
}
Dovresti creare una funzione toString() invece di getMyString(). Quindi puoi fare 'System.out.println (myConst)' – Rhs
Penso che il modo migliore per produrre l'effetto desiderato sarebbe il seguente:
public class Const {
private String str;
public Const(String hello) {
str = hello;
}
public String toString() {
return str;
}
public static void main(String[] args) {
System.out.println(new Const("Hello!"));
}
}
Questo sostituisce il metodo public String Const()
utilizzato in precedenza, e ridefinendo il metodo di Object
public String toString()
(Che tutto Le classi Java ereditano da) Il valore String dell'oggetto viene stampato correttamente quando si desidera stampare l'oggetto, quindi il metodo principale rimane invariato.
Un costruttore non può restituire un valore perché un costruttore restituisce implicitamente l'ID di riferimento di un oggetto e poiché un costruttore è anche un metodo e un metodo non può restituire più di un valore. Quindi diciamo che il costruttore esplicito non ha un valore di ritorno.
Molte grandi risposte già. Vorrei solo aggiungere che, se si desidera ottenere un codice di ritorno separato dall'oggetto stesso come risultato del richiamo di un costruttore, è possibile racchiudere il costruttore in un factory method
che, al momento della creazione, potrebbe ad esempio eseguire alcune convalide dei dati all'interno l'oggetto costruito e restituire un boolean
a seconda del risultato.
Per restituire un valore da un costruttore - è sufficiente passare un array come parametro. per illustrare il principio:
Test() {
Boolean[] flag = new Boolean[1];
flag[0] = false;
new MyClass(flag);
System.out.println(flag[0]); // Will output 'true'
}
class MyClass {
MyClass(Boolean[] flag) {
// Do some work here, then set flag[0] to show the status
flag[0] = true;
}
}
/************************************************
Put the return value as a private data member, which gets
set in the constructor. You will need a public getter to
retrieve the return value post construction
******************************************************/
class MyClass
{
private Boolean boolReturnVal;
public Boolean GetReturnVal() { return(boolReturnVal); }
MyClass() // constructor with possibly args
{
//sets the return value boolReturnVal
}
public static void main(String args[])
{
MyClass myClass = new MyClass();
if (myClass.GetReturnVal())
{
//success
}
}
}
- 1. Costruttore PHP per restituire un valore NULL
- 2. Un Runnable può restituire un valore?
- 3. Come può un riferimento null a un'interfaccia restituire un valore?
- 4. Quali valori può restituire un costruttore per evitare di restituirlo?
- 5. Un metodo di connessione può restituire un valore?
- 6. FMDatabaseQueue Come restituire un valore
- 7. Un envo java può avere più di un costruttore?
- 8. Come restituire un set in Java
- 9. Come restituire un metodo booleano in java?
- 10. una funzione può restituire più di un valore?
- 11. cosa restituisce un costruttore in java
- 12. PHP: un metodo può restituire un puntatore?
- 13. Kotlin: come restituire un valore dall'ambito?
- 14. Come restituire un valore con Dispatcher.Invoke?
- 15. Come restituire un valore da un'espressione lambda?
- 16. restituire un valore booleano - jdbcTemplate
- 17. Chiamare un userform e restituire un valore
- 18. Java inizializzare un calendario in un costruttore
- 19. Come restituire un oggetto senza costruttore di copia
- 20. esplicitamente Restituzione di un valore da un costruttore in javascript
- 21. Impossibile restituire un valore da una funzione
- 22. Come posso restituire un valore casuale da un array?
- 23. Come posso restituire un valore predefinito per un attributo?
- 24. Sails JS: come restituire un valore da un servizio
- 25. Come posso restituire un valore da un thread in Ruby?
- 26. Una funzione VBScript può restituire un dizionario?
- 27. nusoap può restituire un array di stringa?
- 28. Una classe può restituire un oggetto stesso
- 29. Il nuovo costruttore di file() può restituire null su Android?
- 30. Il costruttore può chiamare un altro costruttore in C++?
consideri la modifica del titolo di questa interrogazione a qualcosa come "Java: è il mio costruttore qui restituire un valore?" Ho una domanda specifica su come Java restituisce i valori dai costruttori e ho pensato che questa domanda riguardasse quell'argomento più generale ... Invece è qualcosa come "Aiuto, non posso assegnare un valore di ritorno al mio costruttore!" – Jan