C# tiene sintaxis para declarar y usar propiedades. Por ejemplo, se puede declarar una propiedad como la que sigue:Ausencia de sintaxis de propiedad en Java
public int Size { get; set; }
También se puede poner un poco de lógica en la propiedad, así:
public string SizeHex
{
get
{
return String.Format("{0:X}", Size);
}
set
{
Size = int.Parse(value, NumberStyles.HexNumber);
}
}
Independientemente de si se tiene lógica o no , una propiedad se utiliza en la misma forma que un campo:
int fileSize = myFile.Size;
no soy ajeno a Java o C# - yo he usado tanto mucho y siempre he echado de menos tener sintaxis de la propiedad en Java. He leído en this question que "es muy poco probable que se añada soporte de propiedad en Java 7 o tal vez", pero francamente me resulta demasiado trabajo cavar en discusiones, foros, blogs, comentarios y JSR para averiguar por qué .
Así que mi pregunta es: ¿alguien puede resumir por qué Java no es probable que obtenga la sintaxis de la propiedad?
- ¿Es porque no se considera lo suficientemente importante en comparación con otras posibles mejoras?
- ¿Existen limitaciones técnicas (por ejemplo, relacionadas con JVM)?
- ¿Es una cuestión de política? (por ejemplo, "He estado codificando en Java desde hace 50 años y digo que no necesitamos propiedades steenkin '!")
- ¿Es un caso de bikeshedding?
Una cosa que realmente no entiendo de este sintaxis: public int Size {get; conjunto; } es, ¿por qué proporcionar get/set a un campo ya público? ¿Cuál es la diferencia entre eso y: "public int Size"; ?? Según el segundo, tiene sentido. – OscarRyz
@Oscar Y a veces, cuando quiero ser * realmente * rápido con algo, puedo hacer eso. Resharper me permite hacerlo luego de forma automática con 1 pulsación de tecla. – krosenvold
@Oscar: La diferencia es que las propiedades y los campos se manejan de forma diferente en el nivel de VM. Si declara una propiedad pública trivial en lugar de un campo público, puede agregarle lógica más adelante, sin romper la compatibilidad binaria. –