Sto cercando di capire i metodi generici in Java. Dato il codice seguente:Informazioni sui metodi generici java
public class GenericTest {
interface Shape {
public long area();
}
public static class Triangle implements Shape
{
private long base, height;
public long area() { return (base * height)/2; }
}
public static class Rectangle implements Shape
{
private long width, height;
public long area() { return width * height; }
}
public <T extends Shape> long area1(T shape)
{
return shape.area();
}
public long area2(Shape shape)
{
return shape.area();
}
}
non riesco a vedere/capire perché devo usare/attuare area1 anziché area2 (o viceversa). Mi sto perdendo qualcosa? Non entrambi i metodi fanno la stessa cosa?
E mi ha lasciato un po 'confuso per quanto riguarda i farmaci generici in Java
In questo caso non ha senso usare i generici. I casi in cui * ha * un senso sono, quando non sai che tipo di tipi devi ** memorizzare **. –
In questo caso, come @LukasKnuth ha affermato che non è necessario creare una versione generica dell'area area() è accettabile; Tuttavia la documentazione oracle corrente mostra grandi esempi di generici. Gli esempi generici di caratteri jolly possono anche aiutare a chiarire la confusione ... .ha un'occhiata a http://docs.oracle.com/javase/tutorial/extra/generics/methods.html –
Stavo guardando i generici come un equivalente approssimativo di C++ modelli. La cosa fondamentale che hai indicato qui è che manca dalle altre risposte (e probabilmente quello che mi manca è il concetto che sono usate "quando non sai di che tipo ** memorizzare **". Quale è esattamente quello che stavo cercando nella risposta :-) – Xaq