powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / non-static variable ... cannot be referenced from a static context
25 сообщений из 45, страница 1 из 2
non-static variable ... cannot be referenced from a static context
    #39672129
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Main {
	public static class TEST{
		
		public static void set(){
		}
	}
	
	
	public static class TEST2{
		
		TEST TEST;
		
		public static void set(){
			TEST.set();  <<<<<<<<<<<<<<<<<<<<<<<<<
		}
	}
}



вот такая ситуация находясь в статическом контексте пытаюсь вызвать статическую функцию другого класса.
Получаю ошибку.
Внимание: я знаю как обойти тупость компилятора и исправить этот код, чтобы все заработало правильно.
Но ситуация глупая. Такого в языке с многолетней эксплуатацией просто быть не должно.

Очевидно, что поскольку я нахожусь в статическом контексте, не статические поля мне не доступны и НЕ интересны, поэтому дай мне весь доступный статический контекст.

а вот фиг.

========================
поскольку я занимаюсь кодогенерацией на различный языках. постоянно нарываюсь на такие идиоцкие "закладки".
Наболело.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672135
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ах да, забыл написать.
в C# например все работает так, как и должно.

Всем привет!
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672142
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дарахой, днефничок.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672145
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
язычёк
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672157
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

Вы так уверенно говорите о том, что можете ошибки компилятора обойти, но вот непонятно, что это такое за определение у Вас в коде

Код: java
1.
TEST TEST;



Уберите его и компилятор сразу "поумнеет" или определите

Код: java
1.
TEST test;

.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672161
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Назвали переменные и классы одинаково - а потом удивляются.

Вот нахрена так делать? Вы бы еще их еще и по русски назвали бы и с пробелами.

Вроде же общепринято, что классы называют с заглавной буквы, а поля и переменные со строчной.

А на факт, что какой-то другой говно язык по другому обрабатывает говно код - любителям кофе глубоко пофиг.

IMHO

P.S.
А в C# можно переменные и классы называть по русски и с пробелами? Вот в Oracle - запросто )))
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672164
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TEST test;
все что я делаю соответствут правилам.а выкрутится можно ещё проще.
Main.TEST.set();

вручную бы такой код скорее писать бы не стал. но кодогенератор - он прост, генерит по правилам, согласно придложенным метаданным.

данная сиуация, досадный, но легко обходимый, баг - исправление которого ничего не поломает, а только улучшит.

ещё раз в С# все работает как и ожидается.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672166
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinисправление которого ничего не поломает, а только улучшит.
Чо улучшит-то?
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672169
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

Не надо. При попытке стартануть такой проект выдает ошибку на строку с объявлением

Код: c#
1.
TEST TEST;



Error 1 'Project1.Main.TEST2.TEST': cannot declare instance members in a static class c:\users\valery\documents\visual studio 2012\Projects\Project1\Project1\Main.cs 24 18 Project1.

Та что и Вам привет.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672171
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery Shiskin,

Забыл указать, что не поленился C# протестить. Не поверил, что там такой код допустим
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672173
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

Еще раз. Не работает ни хрена в c#. Не вводите в заблуждение, а если есть работающий код, то покажите его.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672174
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в C# можно
предлагаю не начинать холивар. С# был упомянут в подтверждении логики того как все должно происходить.

Назвали переменные и классы одинаково - а потом удивляются.
ну да. люди такие.
они ещё в базах данных делают так, что имена таблиц совпадают с именами некоторых полей. дикари!

а потом кодогенератор берет эти метаданные и по ним генерит JAVA код .
получается некомпилируемый код.
на JAVA.

на всех других языках - ОК.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672177
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз. Не работает ни хрена в c#. Не вводите в заблуждение, а если есть работающий код, то покажите его.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Console.ReadKey();
        }

        public  class TEST
        {

            public static void set()
            {
            }
        }


        public  class TEST2
        {

            TEST TEST;

            public static void set()
            {
                TEST.set();
            }
        }
    }
}
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672178
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чо улучшит-то?
язык.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672179
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

Нормально, это у таких как Вы. А у нас, как вы сказали, "дикарей" существует точное представление о том, почему совпадение имен таблиц и полей допустимо в sql и требует аккуратности при использовании, как Вы мудро сказали "во всех других языках".

PS. Не злите Blazkowicz, а то он умеет очень хорошо отвечать "НЕ ДИКАРЯМ"
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672181
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin...а потом кодогенератор берет эти метаданные и по ним....

А сделать правильный кодогенератор не судьба?
Например к названиям классов/полей добавлять префиксы.

Cheblin...
они ещё в базах данных делают так, что имена таблиц совпадают с именами некоторых полей. дикари!
...

Вот именно, а потом удивляются, что запрос данных не находит или находит лишнее. Когда параметры ф-ции и поля в таблице названы одинаково )))

Ну и вопрос остается: что будет, если поля в таблице будут названы по русски и с пробелами. Кодогенератор так и будет кодогенерить на Java? И опять виновата будет Java, что пробелы в названиях переменных и классах не допускаются?
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672183
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не злите Blazkowicz,
код под С# скомпилировался?

А у нас, как вы сказали, "дикарей"
перечитайте мое сообщение. там написано совершенно о другом. не торопитесь отвечать.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672187
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

И где в этом коде есть статические классы? Забыли или разницы не понимаете.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672191
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например к названиям классов/полей добавлять префиксы
существует 338 способов как, извернуться и обойти очевидный баг компилятора.
вот программисты js обладают подобными навыками в совершенстве.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672192
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И где в этом коде есть статические классы? Забыли или разницы не понимаете.

Valery, С# похож на JAVA примерно также, как JAVA похожа на JavaScript. Читать документацию всеравно придется.

не торопитьесь отвечать.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672199
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

Вы не желаете принять, что совершенно не понимаете, что такое static класс в java, что такое static класс в c#. У Вас определены nested классы. Вы не сможете в java в inner классах определить static метод.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672203
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

Так и почитайте документацию, а лучше спецификацию и Вы поймете, что компилятор java работает в точном соотвествии со СВОЕЙ, а не с ВАШЕЙ спецификацией.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672205
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery Shiskin вы совершенно не хотите читать документацию, а рассуждать хотите.
в итоге генерируете белый шум. для чего вам это?
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672230
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin,

Укажите, пожалуйста документацию, подтверждащую, что компилятор java должен компилировать Ваш код. Я могу назвать ошибкой компилятора с#, тот факт, что он не понимает такой код, как:

Код: java
1.
new TEST2().set();



А в java это допустимо. Вот, чтобы такая возможность существовала и не допускается двусмысленный код, подобный Вашему. И, думаю, разработчики в java этому только рады.
...
Рейтинг: 0 / 0
non-static variable ... cannot be referenced from a static context
    #39672232
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
new TEST2().set();


кстати ещё одна несуразность. все анализаторы кода верещат от такого.
...
Рейтинг: 0 / 0
25 сообщений из 45, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / non-static variable ... cannot be referenced from a static context
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]