o seguinte tenho a classe SerialParameters , que foi salvo com o nome de arquivo SerialParameters.java
ela não foi instanciada em lugar algum.
public class SerialParameters {
private String portName;
private int baudRate;
private int flowControlIn;
private int flowControlOut;
private int databits;
private int stopbits;
private int parity;
tenho a classe SerialConnection que foi salvo no arquivo SerialConnection.java
[code]
public class SerialConnection implements SerialPortEventListener,
CommPortOwnershipListener {
…
…
private SerialParameters parameters;
…
public SerialConnection(// construtor
[/code]
não existe problema as classes estão funcionando.
minha duvida é que não foi instanciado a classe SerialParameters, mas mesmo assim eu consigo acessar qualquer metodo
a apartir da classe SerialConnection.
então esta linha abaixo é equivalente a instaciar com um new ?
[code]
private SerialParameters parameters;
[/code]
sds
j.silvestre
Mas é lógico que não!
Você simplesmente está atribuindo uma variavél a sua classe. É simplesmente um null.
Faça ela acessar um método sem instancia-la que com certeza dará um NullPointerException (com exceção de métodos estáticos).
Portanto, nesse caso em particular, antes de usar essa variavél, você precisa instanciar, pois ai sim, terás uma referência a um objeto e o poderá manipular.
tendo varios arquivos *.java em um mesmo projeto, só é necessario instanciar uma classe uma vez, e depois simplesmente atribuir uma variavél a classe ?
Essa linha não significa nada.
Se você não instanciar a classe com um new, receberá um nullPointerException.
A não ser que esteja utilizando um framework para injeção de dependências, aí muda tudo…
tendo varios arquivos *.java em um mesmo projeto, só é necessario instanciar uma classe uma vez, e depois simplesmente atribuir uma variavél a classe e usar onde eu achar necessário?
Não necessariamente.
Vamos pensar assim, cada classe java é um determinado endereço (rua + nº).
Cada package é uma rua que pode estar inserida em um bairro, cidade, estado, país, planeta, sistema planetário, galáxia, universo, etc…
Para podermos usar os recursos (métodos e atributos) de uma classe que se encontra na mesma rua (mesmo package) devemos apenas referenciá-la pelo nome. Não há necessidade de um import.
Se a classe que desejamos se encontra em qualquer outro escopo, diferente da rua (package) em que a nossa está. precisamos do import, dizendo onde ela se encontra.
A partir daí, em cada classe que se deseja utilizar outra, independente do import ou não, você precisa instanciá-la, com a diretiva “new”.
Se você vai utilizar a classe Casa em 10 outras, cada uma delas deverá importá-la (se necessário) e ter um new Casa();
Numa boa, leia a apostila da Caelum, aqui!.
Vejo que tu tem dúvidas sobre orientação a objetos e bem básicas de Java.
Essa apostila é excelente, bom conteúdo didatico e adivinha, gratuita.
É um conselho e como dizem, “se conselho fosse bom não era dado, era vendido”, mas fica a dica.
Abraços.
Editando: Apostila FJ-11 - Java e Orientação a Objetos.