Это очень распространенное явление, когда эти «-able» имена являются интерфейсами на Java, но нет официального соглашения об именах интерфейсов, которое я нашел, что предполагает, что имена «-able» должны быть именами интерфейсов, хотя обычно это это так.
соглашения об именовании Официального Java можно найти здесь - это довольно скудная, там действительно нет никаких ограничений для класса или интерфейса именования:
Что касается вашего Throwable
вопроса, Джеймс Гослинг однажды ответил, почему это класс, а не интерфейс, хотя имя было более подходящим для интерфейса.
К сожалению, оригинал статьи с сайта Sun/Oracle, исчез в интернет-эфир, поэтому я могу только обеспечить косвенное атрибуции:
редактирования: Так как я продолжайте получать ответы на этот вопрос, я нашел ссылку на обсуждение Sun через Wayback Machine, здесь: http://web.archive.org/web/20071013225816/http://java.sun.com/features/2002/03/gosling.html?source=jdc_news&date=20020430
JDC: Почему Throwable не интерфейс? Название типа предполагает, что это должно было быть. Возможность улавливать типы, то есть нечто вроде try {} catch(), а не только классов. Это сделает язык программирования Java более гибким.
JG: Причина, по которой Throwable и остальные из этих парней не являются интерфейсами, заключается в том, что мы решили, или я решил довольно рано. Я решил, что хочу иметь какое-то состояние, связанное с каждым исключением, которое бросает. И вы не можете делать это с интерфейсами; вы можете делать это только с помощью классов. Состояние, которое есть, в основном стандартное. Там есть сообщение, есть моментальный снимок, все такое, что всегда есть. а также, если вы сделаете Throwable интерфейс, соблазн назначить, чтобы любой старый объект был Throwable thing. Стюартично, что бросать общие объекты - это, вероятно, плохая идея, что вещи, которые вы хотите бросить, действительно должны быть вещами, которые призваны быть исключениями, которые действительно захватывают природу исключения и то, что происходит. Это не просто общие структуры данных.
Сериализуемый, Итерабельный, Сопоставимый, Управляемый, Вызываемый. Все довольно часто используемые интерфейсы. – Thilo
@Thilo: На самом деле это интерфейсы. Я изучаю классы, заканчивающиеся такими способами. –