'RESTful web service: How can I take this data without printing out the other
I want to just take the data from menSize and its price but it keep printing out the womenSize eventhought it doesn't add anything in it.
Do I need to seperate menSize class and womenSize class or is there any way to fix it:
Here is my Getter and Setter of Shoes class:
private double menSize;
private double price;
private double womenSize;
This is my ShoesController class:
@GetMapping("menshoes") public List getMenShoes() {
List<Shoes> menShoesList = new ArrayList<>(); // Create ArrayList holding men sizes
while (true) {
for (double i = 2; i <= 12; i += 0.5) { // set sizes : 2 , 2.5 ,... until 12
Shoes shoe = new Shoes();
shoe.setMenSize(i);
shoe.setPrice(4); // Set price to $4
menShoesList.add(shoe); // add size to ArrayList
}
return menShoesList;
}
}
@GetMapping("womenshoes")
public List<Shoes> getWomenShoes() {
List<Shoes> womenShoesList = new ArrayList<>(); // Create ArrayList holding women sizes
while (true) {
for (double i = 5; i <= 12; i += 0.5) { // set sizes : 5, 5.5 , ... until 12
Shoes shoe2 = new Shoes();
shoe2.setWomenSize(i);
shoe2.setPrice(4); // Set price to $4
womenShoesList.add(shoe2); // add size to ArrayList
}
return womenShoesList;
}
}
The output when I search for localhost:8080/menshoes are (I just take 3 for examples):
[{"menSize":2.0,"price":"$4.00","womenSize":0.0},{"menSize":2.5,"price":"$4.00","womenSize":0.0},{"menSize":3.0,"price":"$4.00","womenSize":0.0}
Solution 1:[1]
I see 2 options: Either having 2 classes, one for each type of shoe or defining the type inside your class and not having two sizes of which one is always empty. Since you have a limited amount of possible types I suggest you use an enum for modeling the type.
public enum ShoeType {
MEN,
WOMEN
}
public class Shoe {
private ShoeType type;
private double size;
private double price;
// getter, setter, constructor...
}
Solution 2:[2]
Example of this comment: "I would highly recommend only having one [class] type similar to what you suggested"
Default constructor
public class Shoes
{
this(null, 0, 0);
}
Overloaded constructor
public class Shoes(String gender, double size, double price)
{
this.gender = gender;
this.size = size;
this.price = price;
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Kemper Lee |