02. august 2011 - 20:39Der er
10 kommentarer og 1 løsning
Lokal funktion
I pascal kan man definere en lokal funktion inde i en anden funktion f.eks.
function noget : integer;
function en_lokal : byte; begin end;
begin //start på noget en_lokal kan kun kaldes herfra. end;
Hvordan laver man noget lignende i java, jeg har en funktion hvor 3 linier bliver gentaget en del gange og dem vil jeg så flytte ind i en funktion så jeg blot kan kalde den hver gang i stedet.
Java har en feature kaldet "local inner classes" som til en vis grad kan betragtes som vaerende en objekt orienteret pendent til det du soeger.
Men syntaxen er lidt tung.
Eksempel:
public class LocalFunction { public static void test() { class LF { public void p(int n, String s) { for(int i = 0; i < n; i++) { System.out.println(s); } } } LF o = new LF(); o.p(1, "One"); o.p(2, "Two"); } public static void main(String[] args) { test(); } }
Dit første svar ved jeg ikke hvad betyder :) og egentlig kan jeg heller ikke lige forstå hvordan jeg skal bruge koden i dit andet svar, er rimelig nybegynder i java og syntes det er meget rodet sammenlignet med f.eks. Delphi. Men måske er løsningen simpel så her kommer lidt kode:
Jeg opertter en Thread i aktivitetens OnCreate: Thread thread = new Thread(this); thread.start();
senere uden for OnCreate kommer så trådens run metode: det er linierne: pi_string=""; handler.sendEmptyMessage(0); som jeg gerne vil have puttet ind i en metode som jeg kan kalde i stedet.
public void run() { pi_string="Opretter forbindelse"; handler.sendEmptyMessage(0);
FTPClient ftp = new FTPClient(); try{ ftp.connect(ftp_host); pi_string="Connected to "+ftp_host; handler.sendEmptyMessage(0);
ftp.enterLocalPassiveMode(); if(!ftp.login(ftp_user,ftp_password)){ ftp.logout(); pi_string="Can't login, wrong user name or password"; handler.sendEmptyMessage(0);
Takker meget. Jeg har brugt din første løsning som virker fint, jeg er næsten helt sikker på at jeg i går lavede en lignende metode men fik da en fejl besked i eclipse, noget med at metoden ikke kunne kaldes da den ikke tilhørte tråden, men lige meget det virker nu. Mht. at pynte så er der nok mange steder der trænger.
Udover syntaxen er mange af ideerne ogsaa lidt anderledes.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.