Można użyć inspekcji w celu oznaczenia instancji i wyświetlenia ostrzeżenia/błędu. Może to być wyłączne do ostatecznego.
Aby dodać kontrolę niestandardową, wykonaj https://www.jetbrains.com/idea/help/creating-custom-inspections.html, czy to zrobić:
- otworzyć ustawienia (CTRL + ALT + S) i szukać inspekcji.
- W drzewie znajdź "Ogólne", a pod nim "Przegląd inspekcji strukturalnej".
- Pod opisem zobaczysz panel ważności/opcji. Obok opcji naciśnij + i dodaj szablon wyszukiwania.
Aby skonfigurować inspekcję na pytanie:
- w polu wyszukiwania szablonu, dodać zmienną a następnie metodą wywołania, takich jak: $ Instancji $ .get()
- kliknij przycisk Edytuj zmienne i wybierz $ Instance $ z listy.
- W "Ograniczeniach wyrażeń" dodaj typ wyrażenia "Opcjonalny" i zastosuj wiązanie w hierarchii typów.
Zapisz zmiany i przeprowadź inspekcję. (CTRL + Shift + Alt + I, wpisz "Inspekcja wyszukiwania strukturalnego"). Powinno to pokazać wszystkie instancje Optional.get().
Edytuj: W pytaniu pytasz, czy można uzyskać błąd kompilacji. Wierzę, że będzie to ściśle zależało od tego, jak budujesz swój kod. Jeśli dodasz inspekcję i ustawisz poziom błędu na "Błąd", powinien on zawieść w Make/Compile, ale nie w "instalacji mvn".
Jest to trochę ciężkie, ale można napisać własną inspekcję i zainstalować ją za pomocą wtyczki? Prawdopodobnie łatwiejsze podejście ... ale najgorszy przypadek ... – vikingsteve
Czy naprawdę myślisz, że spodziewasz się, że każdy najpierw nazwie "Opcjonalnie.isPresent()"? To nie jest moje rozumienie intencji "Opcjonalnie". Jeśli tak, to jest to tylko to, co trzeba pamiętać, aby wykonać zerową kontrolę, więc nic nie zyskałeś. Na przykład, co z zastosowaniami 'Optional.map()' - w takim przypadku twoja inspekcja zidentyfikowałaby to jako problem, ale mogłaby być całkowicie bezpieczna, bez wcześniejszego wywoływania 'isPresent()'. – DaveyDaveDave
Mam na myśli, że 'get()' musi zostać wywołane po sprawdzeniu z 'isPresent()'. Nie powiedziałem nic o 'map()' ani żadnych innych metodach. – Renato