dúvida extremamente simples - como criar um método de object?

pesquisei no Google mas não achei…

quando é q crio um método do tipo Obejct?

pode me explicar e dar um exemplinho por gentileza?

muito grato.
André AS

Quando você diz um método “do tipo Object”, você está querendo dizer um método que retorna um Object? Tipo:

public Object retornaQualquerTreco(){ ... }

… é isso?

\//

Mais ou menos pelo que entendi na documentação, a classe Object é a classe raiz da hierarquia de classes.

Então quando vc cria um Object, não está especificando de que tipo ele é, então poderia ser do tipo Integer, String ou outra classe qualquer, receberia qualquer tipo de classe setada para ele.

Essa duvida realmente ta complicada de entender. :lol:

 int calculo = new soma();

Isso ?

Um pequeno teste de uso de um método que retorna Object

public class Objects {
    public static void main(String[] args) {
        Objects objects = new Objects();
        for (int i=0; i < 3; i++) {
            Object obj = objects.teste(i);
            if (i == 0)
                System.out.println("Retornou uma String: " + obj);
            else if (i == 1)
                System.out.println("Retornou um Inteiro: " + obj);
            else if (i == 2)
                System.out.println("Retornou um Double: " + obj);
        }
    }

    private Object teste(int s) {
        Object result = null;

        String string = "Hello World";
        Integer integer = 100;
        Double aDouble = 12.33;

        if (s == 0)
            result = string;
        else if (s == 1)
            result = integer;
        else if (s == 2)
            result = aDouble;

        return result;
    }
}

O método teste, retorna um Objetc, independente se for uma String, Inteiro ou Double. Caso vc não saiba qual seria seu retorno, ou fosse retornar diferentes tipos Classes, poderia usar um retorno do tipo Object.

[quote=andredecotia]pesquisei no Google mas não achei…

quando é q crio um método do tipo Obejct?

pode me explicar e dar um exemplinho por gentileza?

muito grato.
André AS[/quote]

Na verdade é difícil você ter de criar um método que retorne um tipo Object (no sentido em que o tipo de retorno do método retorne qualquer Object, não somente Objects de um determinado tipo - como String ou Aluno). Se você está precisando criar um método desse tipo, provavelmente está tentando criar algo genérico demais.

Mesmo que crie algo “Generico” demais, cuidado, pos com esse retorno voce so podera acessar metodos da classe Object, a menos que faca uma conversao para um tipo e se vc sabe que tipo vai retornar nao tem porque seu metodo retornar Object…

Muito cuidado ao usar Object como tipo de retorno ou argumento de metodo… Faca isso somente se a arquitetura do seu projeto precisar, mas evite ao maximo… Qualquer coisa mais “Generica” que voce precisar, use Generics… Bem… nao qualquer coisa, mas grande parte… rsrrs

Abs…

Usar o Object não é uma boa idéia.

Talvez faltou pensar um pouco mais …

pra que seria esse método ?
Talvez possamos ajudar …

[quote=andredecotia]pesquisei no Google mas não achei…

quando é q crio um método do tipo Obejct?

pode me explicar e dar um exemplinho por gentileza?

muito grato.
André AS[/quote]

Vc vai usar o Object quando vc precisar de escolher ou descobrir dinamicamente o tipo de um Objeto 8)

[quote=Carlos_ds_jar][quote=andredecotia]pesquisei no Google mas não achei…

quando é q crio um método do tipo Obejct?

pode me explicar e dar um exemplinho por gentileza?

muito grato.
André AS[/quote]

Vc vai usar o Object quando vc precisar de escolher ou descobrir dinamicamente o tipo de um Objeto 8)[/quote]

Cara… serio… Pra que ??? Onde que isso se encaixaria em um Projeto… Gostaria de saber… nunca peguei uma dessa pela frente…

Você retorna um Object quando você, em tempo de compilação, não faz idéia do que o método irá retornar em tempo de execução, OU quando o método poderá retornar um tipo completamente novo, criado depois da compilação.

Por exemplo, o método getAttribute() do HttpRequest. Você pode colocar qualquer coisa no request, que será passado adiante (para uma página JSP, para um outro Servlet etc.). Esse método foi criado com essa intenção.

Na hora em que os caboclos lá do projeto Apache Tomcat (ou do JBoss… ou do Jetty… tanto faz :P) compilaram essa classe, eles jamais poderiam fazer idéia do que os usuários finais dessa API teriam necessidade de passar por um request.

Geralmente, a gente passa uma List de Strings, ou uma String pura. Mas já imaginou a trabalheira que ia dar criar um método setAttribute() recebendo cada tipo diferente de objeto?

Além disso, e mais grave: e os meus objetos, feitos das classes que eu criei? Suponha que eu tenha criado um objeto da classe Cachorro, ou da classe UsuarioLogadoComAutorizacaoDeAdministrador, ou da classe ObjetoAbstratoSaidoDeUmaMenteLouca, e eu os queira passar de um Servlet pra outro pelo request. Se somente existisse um método setAttribute() para cada classe, o que eu faria? Teria que mandar um e-mail lá pra Apache pedindo por gentileza pros caras criarem um método personalizado pra mim??

Lógico que não, é por isso que o método aceita um Object e retorna um. É uma questão de polimorfismo. Porque como alguém corretamente disse mais acima, Object é a raiz de toda árvore de herança em Java. Object é o pai de todo e qualquer objeto na plataforma Java (exceto, é claro, os tipos primitivos como int, double, boolean etc., que não são objetos). Portanto, todo e qualquer objeto Java que existe, existiu ou existirá É-UM Object.

A mesma lógica é usada, por exemplo, pelo Hibernate e outros frameworks que trabalham com tipos muito abstratos de dados.

[quote=thiagobaptista]Você retorna um Object quando você, em tempo de compilação, não faz idéia do que o método irá retornar em tempo de execução, OU quando o método poderá retornar um tipo completamente novo, criado depois da compilação.

Por exemplo, o método getAttribute() do HttpRequest. Você pode colocar qualquer coisa no request, que será passado adiante (para uma página JSP, para um outro Servlet etc.). Esse método foi criado com essa intenção.

[/quote]

is truth… valew cara, precisava ter um exemplo disso…

Abs :wink: