Ответ 1
Есть ли способ переопределить классы Java как файлы ресурсов?
Нет. Xavier Ducrohet из группы инструментов Android обсудил здесь несколько здесь.
Есть способы выполнить то, что вы хотите, хотя более того, через секунду.
Почему это происходит?
Ваш код Java должен компилироваться. Предполагая, что вы ссылаетесь на класс Foo
из других классов в исходном наборе main
, класс Foo
должен иметь один и тот же открытый API независимо от того, какой вкус компилируется. Если вы смогли полностью заменить основной Foo
на специфичный для аромата Foo
, это может быть недействительным. Это, конечно, не проблема, которую невозможно решить с помощью этих инструментов, но решение существующих инструментов сборки просто не позволяет вам это делать.
Конечно, с такими ресурсами, как изображения, это совершенно по-другому - пока существует некоторая версия ресурса, Android может использовать его просто отлично.
Тем не менее, вы можете создавать реалистичные реализации класса, используемые в вашем исходном наборе main
. Самый простой способ - просто поместить только Foo
в каждый вкус и не предоставить Foo
в исходном наборе main
. Для бонусных точек создайте интерфейс для этих реализаций в исходном наборе main
, чтобы убедиться, что реализации, специфичные для аромата, соответствуют одному и тому же интерфейсу и не будут вызывать ошибки сборки.