write - ¿Java tiene "propiedades" que funcionan de la misma manera que las propiedades funcionan en C#?
que significa console writeline en c# (5)
En C #, puede usar las propiedades para hacer que un campo de datos sea de acceso público (permitiendo que el usuario acceda directamente a él) y, sin embargo, retener la capacidad de realizar la validación de datos en aquellos campos a los que se accede directamente. ¿Tiene Java algo similar? Para Instancia, suponga que existe una clase C # con la siguiente implementación (ver a continuación):
public class newInt{
public newInt(){...}
public int x{
get{ return this.x }
set{ this.x = isValid(value) }
}
}
private static int isValid(int value){...}
Esta definición en la clase le permite al usuario "naturalmente" usar el campo de datos ''x'' cuando recupera valores y le asigna valores. A continuación se muestra cómo se usaría en main.
public class Test{
public static void main(String[] args){
newInt a = new newInt();
a.x = 50;
int b = a.x;
}
}
La pregunta es ... ¿java puede hacer esto también? Si es así, ¿cómo se llama?
Ahí está la plataforma Java y el lenguaje Java.
El lenguaje Java no admite propiedades (y probablemente nunca lo hará), pero no está obligado a usar el lenguaje Java para trabajar con la plataforma Java (al igual que no necesita atenerse a C # para trabajar con la plataforma .NET). ).
Comprobar:
Y muchos otros.
No, en su lugar usarías los métodos getter y setter. Esta es una convención de Java.
public class newInt {
public newInt() {...}
private int _x = 0;
public int getX() {
return this._x;
}
public void setX(int x) {
this._x = isValid(x);
}
}
No, no lo ha hecho.
Realmente tengo un pequeño problema para entender estas propiedades de C #, porque creo que una de las reglas es realizar el menor código posible en ellas y, como ya son públicas, ¿por qué no usar atributos públicos en su lugar?
Entonces, tu equivalente en Java (y probablemente feo) sería:
public class NewInt { // In Java class names start with uppercase by convention
public int x;
}
Y lo usas como:
NewInt ni = new NewInt();
ni.x = 50;
int b = ni.x;
Hay algo que estoy perdiendo, eso es seguro, pero, la mayoría de las veces, esto haría (por cierto, nunca codifico así: P)
Por cierto
Realmente no me gustan los captadores ni los definidores, pero los acepto como parte de las convenciones de Java.
Simplemente me gustaría que hayan usado esto en su lugar:
public class NewInt {
private int x;
public int x(){
return this.x;
}
public void x(int value ) {
this.x=value;
}
}
Así que el uso hubiera sido:
NewInt a = new NewInt();
a.x(10);
int b = a.x();
Probablemente en la próxima vida de Java.
No.
Es por eso que Java tiene getters / setters.
En C # típicamente tienes algo como:
public class SomeObject
{
private string _title = "";
public string Title { get { return _title; } set { _title = value; } }
}
// Or with Auto-Properties
public class SomeObjectAutoProperties
{
public string Title { get; set; }
}
El equivalente de getter / setter de Java sería:
public class SomeObject
{
private String _title = "";
public string getTitle() { return _title; }
public void setTitle(String value) { _title = value; }
}
No. Java no tiene propiedades. El lenguaje Java es usar mutator / accessor (getter / setter). Si bien muchas personas están a favor de agregarlas, es poco probable que se incluyan en la próxima versión (Java 7).
Curiosamente, JavaFX tiene propiedades.
Tenga en cuenta que cuando nació Java, tomó prestadas muchas ideas de C ++. Así, algunas de las sintaxis y expresiones idiomáticas son muy similares a ese lenguaje.