Acessar atributos de uma classe em pacotes diferentes

5 respostas
R

Olá pessoal,

estou com um problema no momento de referenciar atributos estáticos de pacotes diferentes. Estou utilizando uma lista para armazenar os valores. Como fazer tal referência, se possível é claro. Quando ele esta dentro do mesmo pacote o programa roda corretamente mas quando faço o desmenbramento pois quero deixar as classes em diferentes pacotes o mesmo dá erro (prim is not public in contabancaria.Pessoa; cannot be accessed from outside package) de referência devido ser static.

Obrigado.

package contabancaria;

public class Pessoa {
  
  private String nome;
  private String dataDeNascimento;
  private String endereco;
  private String numero;
  private String Bairro;
  private String cep;
  private String cidade;
  private String uf;
  private String celular;
  private String resid;
  private long cpf;
   
  private Pessoa prox;
  private Pessoa ante;
 [color=red] static Pessoa prim,atual; [/color]
  static Pessoa busca;

      public Pessoa (String nome, String dataDeNascimento, String endereco, String numero, String bairro, String cep, String cidade, String uf, String celular, String resid, long cpf){
          this.nome = nome;
          this.dataDeNascimento = dataDeNascimento;
          this.endereco = endereco;
          this.numero = numero;
          this.Bairro = bairro;
          this.cep = cep;
          this.celular = celular;
          this.resid = resid;
          this.cpf = cpf;
          
          this.prox = null;
          this.ante = null;
      }
package formularios;

import contabancaria.*;
import javax.swing.JOptionPane;

public class jIFConta extends javax.swing.JInternalFrame {
    Pessoa cliente = null; //criação do novo objeto cliente recebendo null
    ContaComum contaComum = null;
    ContaEspecial contaEspecial = null;

//Botao Consultar
private void jBConsultarActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if (jTFCpf.getText().equals("")) {
           JOptionPane.showMessageDialog(null, "CAMPO CPF VAZIO", "Consulta de Clientes", JOptionPane.ERROR_MESSAGE);
        } else {
             [color=red] if (cliente.prim == null)  [/color]{
                JOptionPane.showMessageDialog(null, "Lista Vazia!", "Consulta de Clientes", JOptionPane.INFORMATION_MESSAGE);
                new jIFConta().setVisible(true);
             } else {
                cliente = cliente.prim;
                long cpf = new Long(jTFCpf.getText()).longValue();
                    if (cliente.consultarPessoa(cpf) == 0) {
                        JOptionPane.showMessageDialog(null, "CLIENTE NÃO CADASTRADO", "Consulta de Clientes", JOptionPane.ERROR_MESSAGE);
                    } else {
                        cliente = cliente.busca;
                        jPCadastroConta.enable(true);
                        jTFNome.setText(cliente.getNome()); 
                        jTFEndereco.setText(cliente.getEndereco());
                        jTFNumero.setText(cliente.getNumero());
                        jTFBairro.setText(cliente.getBairro());
} } } }

5 Respostas

rxca

ruymds,

tenta deixar o seu atributo prim como public, porque quando você deixa sem modificador de acesso, ele assume o friendly (package) e os atributos ficam visiveis “publicamente” pra quem está dentro do pacote. não sei se isso vai servir, mas tenta e avisa a gente! :slight_smile:

[]'s

R

rxca,

ja fiz como public este atributo, o erro cessa mas o mesmo quando compila não me retorna a lista conforme o código.

:frowning:

obrigado pelo retorno.

espiaoweb2011
ruymds:
Olá pessoal,

estou com um problema no momento de referenciar atributos estáticos de pacotes diferentes. Estou utilizando uma lista para armazenar os valores. Como fazer tal referência, se possível é claro. Quando ele esta dentro do mesmo pacote o programa roda corretamente mas quando faço o desmenbramento pois quero deixar as classes em diferentes pacotes o mesmo dá erro (prim is not public in contabancaria.Pessoa; cannot be accessed from outside package) de referência devido ser static.

Obrigado.

package contabancaria;

public class Pessoa {
  
  private String nome;
  private String dataDeNascimento;
  private String endereco;
  private String numero;
  private String Bairro;
  private String cep;
  private String cidade;
  private String uf;
  private String celular;
  private String resid;
  private long cpf;
   
  private Pessoa prox;
  private Pessoa ante;
 [color=red] static Pessoa prim,atual; [/color]
  static Pessoa busca;

      public Pessoa (String nome, String dataDeNascimento, String endereco, String numero, String bairro, String cep, String cidade, String uf, String celular, String resid, long cpf){
          this.nome = nome;
          this.dataDeNascimento = dataDeNascimento;
          this.endereco = endereco;
          this.numero = numero;
          this.Bairro = bairro;
          this.cep = cep;
          this.celular = celular;
          this.resid = resid;
          this.cpf = cpf;
          
          this.prox = null;
          this.ante = null;
      }
package formularios;

import contabancaria.*;
import javax.swing.JOptionPane;

public class jIFConta extends javax.swing.JInternalFrame {
    Pessoa cliente = null; //criação do novo objeto cliente recebendo null
    ContaComum contaComum = null;
    ContaEspecial contaEspecial = null;

//Botao Consultar
private void jBConsultarActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if (jTFCpf.getText().equals("")) {
           JOptionPane.showMessageDialog(null, "CAMPO CPF VAZIO", "Consulta de Clientes", JOptionPane.ERROR_MESSAGE);
        } else {
             [color=red] if (cliente.prim == null)  [/color]{
                JOptionPane.showMessageDialog(null, "Lista Vazia!", "Consulta de Clientes", JOptionPane.INFORMATION_MESSAGE);
                new jIFConta().setVisible(true);
             } else {
                cliente = cliente.prim;
                long cpf = new Long(jTFCpf.getText()).longValue();
                    if (cliente.consultarPessoa(cpf) == 0) {
                        JOptionPane.showMessageDialog(null, "CLIENTE NÃO CADASTRADO", "Consulta de Clientes", JOptionPane.ERROR_MESSAGE);
                    } else {
                        cliente = cliente.busca;
                        jPCadastroConta.enable(true);
                        jTFNome.setText(cliente.getNome()); 
                        jTFEndereco.setText(cliente.getEndereco());
                        jTFNumero.setText(cliente.getNumero());
                        jTFBairro.setText(cliente.getBairro());
} } } }

Passo 1 : Coloque o modificador public, o erro já te informa que o atributo não é publico.
Passo 2 : Coloque o modificar public também no atributo busca.

R

Valeu pessoal,

consegui aqui. Não sei se é o apropriado se alguém tiver uma sugestão melhor será bem vindo. Fiz a seguinte declaração:

public static Pessoa prim,atual; public static Pessoa busca;

Obrigado aos que contribuiram.

Abraços

Lucas_Abbatepaolo

Evite usar elementos estaticos…ou melhor vc sabe o que significa um elemento ser STATIC???

Criado 20 de dezembro de 2011
Ultima resposta 21 de dez. de 2011
Respostas 5
Participantes 4