Tego znacznika należy używać w przypadku pytań specyficznych dla języka Java 8, który jest wersją 8 (numer wewnętrzny 1.8) platformy Java, wydanej 18 marca 2014 r. W większości przypadków należy również podać znacznik java.
Nowa funkcja dostępna w JDK 8 umożliwia dodawanie do istniejącego interfejsu przy zachowaniu zgodności binarnej. Składnia jest podobna do public interface SomeInterface() { void existingInterface(); void newInterface() default SomeClass.defaultImplementation; } W ten sposób w przypadku wszystkich istniejących implementacji, SomeInterfacegdy aktualizują się do nowej wersji, nie wszystkie nagle mają błędy kompilacji …
Przenoszę aplikację internetową z Tomcat 7 na inny serwer z Tomcat 7, ale z Javą 8. Tomcat uruchamia się pomyślnie, ale w dzienniku catalina.outotrzymuję: org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15 at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:131) at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2049) at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1931) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1899) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1885) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1281) …
Chcę zamienić następujący kod za pomocą java8 Optional: public Obj getObjectFromDB() { Obj obj = dao.find(); if (obj != null) { obj.setAvailable(true); } else { logger.fatal("Object not available"); } return obj; } Poniższy pseudokod nie działa, ponieważ nie ma orElseRunmetody, ale tak czy inaczej ilustruje mój cel: public Optional<Obj> getObjectFromDB() …
Chciałbym wykonać następujące czynności: List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); ale w taki sposób, że wynikowa lista jest implementacją guawy ImmutableList. Wiem, że mógłbym to zrobić List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); List<Integer> immutableList = ImmutableList.copyOf(list); ale chciałbym odebrać do niego bezpośrednio. próbowałem List<Integer> list = IntStream.range(0, 7) .collect(Collectors.toCollection(ImmutableList::of)); ale rzucił wyjątek: …
Próbuję przekonwertować stare konwencjonalne dla każdej pętli do java7 na java8 dla każdej pętli dla zestawu pozycji mapy, ale otrzymuję błąd. Oto kod, który próbuję przekonwertować: for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue()); } Oto zmiany, które wprowadziłem: …
W Oracle „prymitywnych typów danych” strony , to mówi, że Java 8 dodaje wsparcie dla unsigned int i wyroby długie: int: Domyślnie inttyp danych jest 32-bitową uzupełnienie dwójkowe liczbę całkowitą, która ma wartość minimalną -2 31 i wartość maksymalnej ilości 2 31 -1. W Java SE 8, a następnie, można …
Załóżmy, że mamy klasę Obj class Obj{ int field; } i że masz listę Objinstancji, tj List<Obj> lst. Teraz, jak mogę znaleźć w Java8 strumieniach sumę wartości pól int fieldz obiektów na liście lstpod kryterium filtrowania (np. Dla obiektu okryterium to o.field > 10)?
Dlaczego dostawcy wspierają tylko konstruktorów bez argonu? Jeśli obecny jest domyślny konstruktor, mogę to zrobić: create(Foo::new) Ale jeśli jedyny konstruktor przyjmuje String, muszę to zrobić: create(() -> new Foo("hello"))
Wiem, że metoda w Javie nie może być większa niż 64 KB. Ograniczenie powoduje problemy z generowanym kodem z gramatyki JavaCC . Mieliśmy problemy z Javą 6 i mogliśmy to naprawić, zmieniając gramatykę. Czy limit został zmieniony dla Java 7, czy jest planowany dla Java 8? Żeby to było jasne. …
Rozważ, że mam kod podobny do następującego: class Foo { Y func(X x) {...} void doSomethingWithAFunc(Function<X,Y> f){...} void hotFunction(){ doSomethingWithAFunc(this::func); } } Załóżmy, że hotFunctionjest to wywoływane bardzo często. Czy byłoby wskazane buforowanie this::func, może w ten sposób: class Foo { Function<X,Y> f = this::func; ... void hotFunction(){ doSomethingWithAFunc(f); } …
Mam następującą sytuację Map<Key, ListContainer> map; public class ListContainer{ List<AClass> lst; } Muszę scalić wszystkie listy lstz ListContainerobiektów z Mapmapy. public static void main(String args[]){ List<AClass> alltheObjectsAClass = map.values().stream(). // continue.... } Masz jakiś pomysł, jak, używając strumieniowego API Java 8?
Podczas wypróbowania funkcji Multi-catch znalazłem w mojej m1()metodzie wszystko działa dobrze zgodnie z oczekiwaniami. Jednak w m2()tym samym kodzie nie kompiluje się. Właśnie zmieniłem składnię, aby zmniejszyć liczbę wierszy kodu. public class Main { public int m1(boolean bool) { try { if (bool) { throw new Excep1(); } throw new …
Podczas omawiania sposobów konwertowania prymitywnych tablic na strumienie okazało się, że char[]nie są one obsługiwane, podczas gdy obsługiwane są inne pierwotne typy tablic. Czy jest jakiś konkretny powód, aby pominąć je w strumieniu?
Czy możemy znaleźć hashcodecoś, listco zawiera się jako element? Wiem, że to zła praktyka, ale o to pytał ankieter. Kiedy uruchomiłem następujący kod, generuje on StackOverflowError: public class Main { public static void main(String args[]) { ArrayList<ArrayList> a = new ArrayList(); a.add(a); a.hashCode(); } } Teraz mam dwa pytania: Dlaczego …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.