#java #android #r.java-file
Вопрос:
Мне жаль, если название вопроса немного загадочное. Я просто не мог придумать ничего лучшего.
У меня есть проект, в котором я хотел немного поиграть с именем пакета в AndroidManifest. Пожалуйста, не спрашивайте, почему я это сделал или почему я просто не использовал идентификатор приложения build.gradle.
Дело в том, чтобы не приходилось постоянно корректировать импорт для R.java везде при изменении имени пакета я создал прокси-класс для R.java это выглядит так:
import static com.package.main.R.*;
public class RProxy {
public static final class R{
public static anim anim;
public static attr attr;
public static bool bool;
public static color color;
public static drawable drawable;
public static dimen dimen;
public static id id;
public static integer integer;
public static layout layout;
public static menu menu;
public static plurals plurals;
public static raw raw;
public static string string;
public static style style;
public static styleable styleable;
}
}
Теперь я просто изменил импорт R в каждом классе на RProxy, а каждое использование R на RProxy.R. Теперь мне нужно изменить импорт R только один раз, в RProxy.
Все это компилируется и запускается.
А теперь вот мои вопросы:
- Сейчас я получаю несколько предупреждений (по одному на RProxy.R использование, если быть точным), говоря:
Static member com.package.main.R.id.firstId accessed via instance reference.
Я понимаю, почему я их получаю, но я не знаю, как сделать проксирование другим способом. Как я мог от них избавиться? - Должен ли я избегать такого рода взлома? Почему?
- Был бы лучший способ сделать такое проксирование?
Пожалуйста, обратите внимание, что мой основной интерес в получении ответа заключается в основном в образовательных целях (старое доброе любопытство), но это не значит, что я не буду высоко ценить любой ответ!
Комментарии:
1. Первый показывает, как вы ссылаетесь на статический элемент нестатическим образом (через экземпляр, а не непосредственно из класса)
2. @Vince Emigh Да, я вроде как в курсе этого, но я не знаю, как сделать проксирование другим способом
3. не могли бы вы, пожалуйста, объяснить эту строку: «Я хотел немного поиграть с именем пакета в AndroidManifest». У меня тоже такая же проблема, но я не могу понять вашу реплику