Я бы сказал, что данный текст не связан с предоставленным вами фрагментом кода.
Текст
В тексте описывается использование интерфейса (который, насколько я могу судить, не RandomDoubles), специально читаемый. Я не очень хорошо знаком с тем, как работает Сканер, так как недавно у меня не было Java.
Однако Сканер может принять объект Readable как параметр, из которого он затем читает. Это означает, что где-то в Scanner / read появляется код, подобный следующему.
Readable object = (parameter that is an object that implements Readable);
...
//in Scanner.read
object.read(buffer);
Этот объект Readable может быть одним из любых классов, реализующих Readable, либо собственным классом, либо FileReader, BufferedReader, InputStreamReader ...
Поскольку эти классы реализуют Readable и, следовательно, должны определять чтение (буфер), их можно использовать взаимозаменяемо в классе Scanner, ссылаясь на них как на объект этого типа интерфейса.
В тексте конкретно упоминается, что вы можете добавить эту функциональность в любой существующий класс, сделав его реализующим Readable, а затем определив, как его метод чтения (буфера) будет выводить символы в буфер.
Фрагмент кода
Прикрепленный фрагмент кода просто указывает, как пользовательский класс может использовать случайный объект, но только предоставляет возможность генерировать случайные двойные числа для любой программы, использующей этот класс. Это не связано с интерфейсами.