Bir C++ arka planından geldiğimde, uygulama sırasında nesne oluşturma yoluyla gerek duymaksızın kullanılabilecek birkaç statik yöntem kullanmayı umuyordum. Java Generics'te fonksiyon şablonlarının denkliğini kullanmayı umuyordum. Bu noktada, Java jeneriklerini öğrendiğimi açıklığa kavuşturmak istiyorum.Java Generics - Tip bağımsız değişkenlerle statik yöntemler nasıl yazılır?
Ama bunu denerken, derleyicinin bunu yapmama izin vermeyeceğini görebiliyordum. Ve ben very good discussion as well here'u görebiliyordum. Ama sonra benzer bir dokunuşla bir iç statik sınıf yazmak için uyarı mesajıyla etrafta oynadım ve sezgilerime göre orada çalıştı. Şimdi açıkçası, aşağıda sunduğum iç sınıflara erişmek beceriksiz. Bunun neden bu şekilde Java'da tasarlandığını ve bu iç sınıfın jeneriklerle dış sınıflara sunacağını merak ediyorum.
public class ReflectionBasics<X, Y> {
public static void findMax (X xData, Y yData){
// compiler error - cannot reference static type to non-static type X
}
public void findMin(X xData, Y yData){
// this is fine
}
static final class InnerClass<E> {
public void findMin(E data){
// this will work
}
}
}
Sakar Erişimci: Bir yöntem üzerinde tür parametreleri koymak istiyorsanız
class AccessorClass{
AccessorClass(){
ReflectionBasics.InnerClass<Integer> myData = new ReflectionBasics.InnerClass<Integer>();
myData.findMin(400);
}
}
https://docs.oracle.com/javase/tutorial/java/generics/methods.html Java'nın genel yöntemleri vardır. Ayrıca, Java jeneriklerinin şablon olmadığını ve C++ şablonlarının yapabileceği pek çok şey yapamayacağını unutmayın. (Öte yandan, C++ şablonlarının * yapamadıkları birkaç şeyi yapabilirler.) – Radiodef