Models are an obvious important part of our applications we develop. It’s how we define our data and because of that, we can grow our models to be quite large in number. This post will look at comparing the definition of models between Java, C# (for Xamarin), and Kotlin.
Our example model will be a simple Person
that has a Name
and Description
along with an ID
. Let’s look at how we can define our Person
model with these fields as well as the ability to access these fields publicly.
Using Java
Java is going to be our largest and most annoying to develop. We need to define our class, private fields, and then public functions/methods to get
and set
the value of each of the fields. We also need to be able to instantiate a Person
with all these properties set in the constructor.
Person.java
public class Person{ private int id; private String name; private String description; public Person(int id, string name, string description){ this.id = id; this.name = name; this.description = description; } public void setID(int id){ this.id = id; } public int getID(){ return this.id; } public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public void setDescription(String description){ this.description = description; } public String getDescription(){ return this.description; } }
That’s exhausting…
Now we can instantiate it and update properties like this:
... Person bob = new Person(1, "Bob", "He writes code and stuff"); bob.setDescription("He doesn't actually write code"); ...
Using C# for Xamarin Applications
C# makes our lives a lot easier with the get
and set
mechanism built into properties.
Person.cs
public class Person { public int ID { get; set; } public string Name { get; set; } public string Description { get; set; } public Person(int id, string name, string description) { ID = id; Name = name; Description = description; } }
Nice and neat!
Now we can instantiate it and update properties like this:
... var bob = new Person(1, "Bob", "He writes code and stuff"); bob.Description = "He doesn't actually write code"; ...
Using Kotlin
Kotlin has some cool tricks that allow us to define and set properties directly in our constructor without having to define and set them separately. This gives us the quickest way to create simple POCO definitions and speed up that development time.
Person.kt
class Person(var id: Int, var name: String, var description: String);
One line.
Now we can instantiate it and update properties like this:
... val bob = Person(1, "Bob", "He writes code and stuff"); bob.description = "He doesn't actually write code"; ...
Conclusion
Each language has their nuances, but I think we can all agree that defining models in Java is just a headache that other languages have solved with better solutions.
If you like what you see, don’t forget to follow me on twitter @Suave_Pirate, check out my GitHub, and subscribe to my blog to learn more mobile developer tips and tricks!
Interested in sponsoring developer content? Message @Suave_Pirate on twitter for details.
IN C# you don’t need to create a constructor .. just do:
var obj = new obj { prop=true, propA=”string” };
LikeLike
Well yeah… but the whole point of this was to compare constructors with parameters. Using the default constructor does not guarantee that each property is set which is the idea here. Just a specific example requirement to draw a deeper comparison.
LikeLike