Isaac hat gesagt.:Klassenglobale Variablen sollten so wenig wie möglich eingesetzt werden, es geht auch komplett ohne. Aber sie machen das Leben an vielen Stellen einfacher.
Wetten, dass nicht? Oder wie willst du das hier z.B. ohne Instanzvariablen machen:
Code:
package main;
import sun.net.ftp.*;
import java.io.*;
import sun.net.*;
import java.awt.*;
public class ImgPutter
{
private FtpClient ftpc;
public ImgPutter (String server, String username, String pass) throws IOException
{
this.server = server;
this.username = username;
this.pass = pass;
ftpc = new FtpClient ();
ftpc.openServer (server);
ftpc.login(username, pass);
ftpc.binary();
System.out.println (ftpc.welcomeMsg);
}
public void put (File img) throws IOException
{
OutputStream os = ftpc.put(img.getName());
InputStream is = new FileInputStream (img);
byte[] buf = new byte[1024];
int len;
while ((len = is.read(buf)) >= 0){
os.write(buf, 0, len);
}
os.close();
}
public void close () throws IOException
{
ftpc.closeServer();
}
}
Nun gut, man könnte aus FTPClient ableiten, oder alles in eine statische Methode zu packen. Das würde aber gegen die OOP allgemein oder zumindest gegen das Prinzip der Kapselung verstoßen. Außerdem wollte ich nur nichts zu langes posten, es gibt auch viele Beispielklassen, wo man sehr viele Instanzvariablen in sehr vielen extern aufgerufenen Methoden benötigt.