nalomenko
@nalomenko
Руководитель отдела разработок в студии «Lava»

Одноименные переменные и классы в Java (J2ME)?

Привет всем!


Столкнулся с такой проблемой: static String переменная класса имеет то же имя, что и другой класс моего default package. И теперь при попытке вызвать любой статичный метод класса NetBeans сообщает мне об ошибке.

preambula = (<b>decoder</b>.go(s = new String(reader.get_contents(&quot;/info.txt&quot;, false), &quot;UTF-8&quot;), ';'))[0];<br/>
 <b>decoder </b>= &quot;select&quot;;<br/>



Как видно, в первой строке decoder — имя класса, находящегося в этом же package, а во второй — строковая переменная. Как решить проблему, чтобы NetBeans не думал, что в первой строке я пытаюсь обратиться к методу строковой переменной?


P.S.: Предложения об использовании рефрактора не принимаются ;)
  • Вопрос задан
  • 3179 просмотров
Пригласить эксперта
Ответы на вопрос 2
anmipo
@anmipo
Если бы Вы следовали основным правилам Java (code conventions), такой проблемы вообще не возникло бы.
Во-первых, имена классов должны начинаться с большой буквы (а имена методов должны быть в camelCase, без подчёркиваний).
Во-вторых, использование default package считается дурным тоном; что Вам мешает дать пакету название?
Ответ написан
esin
@esin
Намудрил с классами. Вышеуказанный пример немного корявый. Вот нормальный:

public class TestClass 
{
	public TestClass()
	{

	}

	public String getStringPublic()
	{
		return "1234";
	}

	public static void doNothing()
	{
		//
	}

	public static String getString()
	{
		return "123";
	}
}



package test;

public class Main
{
	public static TestClass globalTestClass = new TestClass();
	
	@SuppressWarnings("static-access")
	public static void main(String[] args)
	{
		globalTestClass.doNothing();
		globalTestClass.getString();
		globalTestClass.getStringPublic();
	}
}

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы