Giriş
1. nesne.<TypeWitness>myMethod() şeklindedir
2. Sınıf::<TypeWitness>myMethod() şeklindedir
Derleyiciye yardımcı olmak için kullanılır.
Örnek
Elimizde şöyle bir generic kod olsun.
Elimizde şöyle bir kod olsun.
1. nesne.<TypeWitness>myMethod() şeklindedir
2. Sınıf::<TypeWitness>myMethod() şeklindedir
Derleyiciye yardımcı olmak için kullanılır.
Örnek
Elimizde şöyle bir generic kod olsun.
public <T extends Object> List<T> getColData(final String col)
Bu kod Object Listesi döndüğü için şu kod derlenmez.List <String> c = Stream.concat(getColDataStream(col1).stream(),
getColDataStream(col2).stream())
.collect(Collectors.toList());
Şöyle yaparız.Stream.concat(table.<String>getColData(col1).stream(),
table.<String>getColData(col2).stream())
.collect(Collectors.toList());
Örnek
Elimizde şöyle bir kod olsun.
public class Foo {
interface Bar {
}
void doesNotCompile() {
Optional.of(new Bar() {}) //Foo$1
.orElse(new Bar() {}); //Foo$2
}
void doesNotCompile2() {
final Bar bar = new Bar() {};
Optional.of(new Bar() {}) //Foo$1
.orElse(bar); //Bar does not derive from Foo$1
}
void compiles1() {
final Bar bar = new Bar() {};
Optional.of(bar).orElse(new Bar() {}); //Foo$1 has super type Bar
}
}
Açıklaması şöyle.Here, Optional has the generic type Foo$1 and you are trying to pass an object of type Foo$2 into orElse which does not have Foo$1 as a super type. Hence the compile error.Şöyle yaparız.
Optional.<Bar>of(new Bar(){}).orElse(new Bar(){});
Hiç yorum yok:
Yorum Gönder