Question: How do I start my function every 5 minutes and 20 seconds? I used: 

```
self.timer = QtCore.QTimer(self)
self.timer.timeout.connect(self.updateplot)
self.timer.start(310000)

```

But I'd like to set it by the time of my PC - so if I start the program at 3:23, the update track is at 3:25:20, 3:30:20 etc.

Answer: 
Using reflection you can give a try to `get` the value of the fields of object:

```
Dog dog = new Dog("labrador","tarzan","uk"); // sample
List<String> values = Arrays.stream(Dog.class.getDeclaredFields())
        .filter(f ->f.getType().equals(String.class))
        .map(f -> {
  try {
    return (String) f.get(dog); // get the value of field from the object
  } catch (IllegalAccessException e) { 
    return ""; /// handle in a cleaner way
  }
}).collect(Collectors.toList());

```
You can think like this that a dog has several properties or attributes like breed type, origin, name and many more. You can add the values to list also, but it will be better to maintain a map because while retrieving you have to know what you are trying to retrieve.

It will be better to maintain a Map of attributes and actual values. The code may be like this.

```
public class Dog {
    private Map<String,String> attributesMap = new HashMap<>();

    //getter and setter for attributesMap

}   

```

You can create instance of Dog class and add the attributes like this.

```
Dog dog = new Dog();
dog.getAttributesMap().put("breed", "some breed");
dog.getAttributesMap().put("origin", "some some origin");

System.out.println("What is the breed type: "+dog.getAttributesMap().get("breed");

```