Buen día a todos: :D
les comento que , eh tenido problemas para manejar, digamos de alguna forma tipos de datos genéricos. Personalmente en c++ lo lograba por medio de plantillas (templates) de la siguiente forma:
#include <iostream>
using namespace std;
template <typename T>
T mayor(T a, T b){
if(a > b){
return a;
}else {
return b;
}
}
int main(int argc, char **argv)
{
cout<<mayor("perro","gato")<<endl;
cout<<mayor(5,3)<<endl;
cout<<mayor(4.23,5.69)<<endl;
return 0;
}
esto me da como resultado:
perro
5
5.69
de esta forma , manejaba casi cualquier tipo de dato siendo muy sencillo.
ahora lo estoy intentando hacer en java , con la clase Object de esta forma:
package paquete;
public class GenericaMayor {
public Object mayor(Object valor1,Object valor2){
if(valor1 >= valor2){ //aca el error.
return valor1;
}else{
return valor2;
}
}
}
pero eh tenido problemas en compilación..
la cuestión es ¿como puedo hacer esto que hacia en c++ , pero en java?. :huh: :huh: :huh:
gracias de antemano , saludo a todos.
Aquí se les llama "clases genéricas".
En realidad es muy sencillo, un ejemplo:
class MyGeneric {
public static void main(String ... args) {
Integer x = 123;
Perro<Integer> dog = new Perro<Integer>(x);
System.out.println(dog.getValue());
}
}
class Perro<T> {
T myValue = null;
public Perro(T t) {
myValue = t;
}
public void setValue(T t) {
myValue = t;
}
public T getValue() {
return myValue;
}
}
gracias por contestar.
la cuestión es que con la clase genérica , no puedo hacer comparaciones de mayor y menos entre tipos de datos, o no se si me complique.
la única forma de que pude sacar una plantilla presida a la del la función en c++ es así:
package paquete;
public class Generica {
public <T extends Comparable> T generico(T valor1,T valor2){
if(valor1.compareTo(valor2)== 1){
return valor1;
}else{
return valor2;
}
}
}
así de esta forma ya puedo utilizar los métodos compareTo asiendo así una verdadera comparación.
pero no se si esto es lo mas "limpio" para esta solución.
saludos.