Kiedy dodaje się $ w nazwie pola?

0

W projekcie lombok w dokumentacji napisane takie coś o opcji onlyExplicitlyIncluded dla adnotacji @ToString.

If set to false (default), all fields (unless static, name starts with a dollar, or otherwise excluded for obvious reasons) serve as the default set of things to include in the toString, modifiable by using the @ToString.Exclude and

Kiedy niby nazywa się pola od $? To jakaś konwencja o której nie wiem?

0

Z tego co ja wiem, to jest konwencja, tak samo jak możesz używać _.. nie musisz się tym jakoś przejmować IMO.

1

ja używasz kodu ze scali czy kotlina w javie

0

W sumie to nie ma jakiejś zasady kiedy to się używa, ja np. jak mam pole o tej samej nazwie co funkcję to do nazwy pola dodaje underscore by kompilator nie płakał

2

Raczej nigdy nie widziałem tego w ludzkim kodzie, ale widziałem w takim wygenerowanym.

Zresztą jak spojrzymy w speckę to wychodzi, że tak właśnie powinno być:

The $ sign should be used only in mechanically generated source code or, rarely, to access pre-existing names on legacy systems.

0

Z ciekawostek, w templejtkach formatujacych outputy (Velocity, StringTemplate i inne) dolar ma istotne znaczenie.

Najpopularniejsze notacje to $zmienna (tu niewątpliwie będzie konflikt, bo dwa dolary sie znoszą, czy coś w tym stylu) i zapasowa ${zmienna}, tu, o ile twórcy nie zabezpieczyli MOŻE się da wyświetlić zmienną dolarową ${$dolarowa}

szatkus1 napisał(a):

Raczej nigdy nie widziałem tego w ludzkim kodzie, ale widziałem w takim wygenerowanym.

Zresztą jak spojrzymy w speckę to wychodzi, że tak właśnie powinno być:

The $ sign should be used only in mechanically generated source code or, rarely, to access pre-existing names on legacy systems.

I tego nalezy się trzymać

0

Jadyny przypadek gdy widziałem że w ktoś świadomie w Javie używa dolara w nazwie zmiennej czy metodzie to vavr w pattern matchingu (poszukaj po $). Chociaż nie wiem czy w Seleniu też nie było dolara (co chyba było problematyczne przy używaniu Selenium w Kotlinie bo tam nie można tak sobie wpisać dolara w kod?)

2

Generalnie nie ma takiej konwencji dla kodu (który pisze programista).

Natomiast dollar$ jest stosowany w syntetycznie wygenerowanych nazwach.

Np. kompilator javy sam generuje takie nazwy w bajtkodzie. Użyj klasy wewnętrznych, lambd - zobacz sobie na dysku co siedzi w folderach z plikami .class, i(lub) podejrzyj je przy użyciu javap.
Ty tego w kodzie nie widzisz, ale takie pola i metody się pojawiają w bajtkodzie i jvm je normalnie obsługuje. Typowy framework bazujący na refleksji (np. lombok) - omija te pola (lub nie - zależy od frameworku i potrzeby - np. metoda toString pewnie nie powinna pokazywać zawartości pól technicznych, wygenerowanych przez kompilator - bo i tak będą kompletnie nieczytelne).

Jeszcze więcej takich pól pojawia się w bajtkodzie jeśli piszesz w alternatywnych języku na jvm (scala, kotlin).

Czyli: jest taka konwencja używana przez kompilatory do bajtkodu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1