There are a number of ways to animate the rotation of a view:
1. ObjectAnimator.ofFloat(view, "rotation", 0f, 90f).start();
This uses reflection to call the setRotation(float f) and float getRotation() methods of the view.
You can use this method to animate any property of a class as long as that class has implemented the appropriate getter and setter methods for that property.
But reflection is a slow operation, so there is a second method that doesn't use reflection. 
2. ObjectAnimator.ofFloat(view, View.ROTATION, 0f, 90f).start();
This uses the rotation Property of the view. Property is an abstract class that defines the setValue(T) and the T get() methods which in turn call the actual getter and setter of the supplied object. For example, the rotation property on the View class uses the following code:
public static final Property<View, Float> ROTATION = new FloatProperty<View>("rotation") {
    @Override
    public void setValue(View object, float value) {
        object.setRotation(value);
    }
    @Override
    public Float get(View object) {
        return object.getRotation();
    }
};
If you want to animate a custom property of an object, you can implement your own Property like the one above.
Then there is a third method, which also doesn't use reflection.
3. view.animate().rotation(90f);
This one has a fluent interface so it's easier to use. You can also chain multiple animations to run together, for example: view.animate().rotation(90f).translationX(10f);
The downside of this method is that you can only animate the standard properties of a View and not custom properties or properties on your own classes.