Java static reference vs dynamic reference and calls -


here post 2 simplified versions of code (but self sufficient, don't need know other variables , on).

i need class including problem import class synchronous_writing package. need class static various classes must call , modify object created @ first subsequently, , not option pass data 1 class make code unreadable...

this class public, still access current class involve problem described below version below. advance help.

backbone of synchronous_writing:

public final synchronous_writing {       public synchronous_writing() {      // variable initialize      }      public static void writer ()      {      //operation performed      }  } 

1st version:

import synchronous_writing;  public classfiletoedit_parser {   // public static final class   synchronous_writing syncedwriter ; // note editor; ";", not {    public filetoedit_parser  (     string inputfile_filetoedit,      string outputfile_editedfile,      charset charset,      string hitlist_fieldsseparator,      string commentline)      throws ioexception, filenotfoundexception   {       syncedwriter = new synchronous_writing(       outputfile_editedfile, charset, standardopenoption.append);   }    protected void parser_writer(path filetoedit)      throws ioexception, filenotfoundexception    {     syncedwriter.writer();   } } 

//the problem here compiler says "the static method writer(string) type synchronous_writing should accessed in static way" (logical since synchronous_writing static)

2nd version:

import synchronous_writing; // public static final class public classfiletoedit_parser {   public filetoedit_parser (     string inputfile_filetoedit,      string outputfile_editedfile,      charset charset,      string hitlist_fieldsseparator,      string commentline) throws ioexception, filenotfoundexception   {     syncedwriter = new synchronous_writing(       outputfile_editedfile, charset, standardopenoption.append);   }    protected void parser_writer(path filetoedit)      throws ioexception, filenotfoundexception    {   // syncedwriter.writer ()    // won't work, don't understand why since    // constructor public, still can't access    synchronous_writing.writer ()    // work, compiler keeps saying syncedwriter   // variable not used (which quite true, since   // constructor initialized)   } } 

to correct 1st version's problem, suppressed synchronous_writing syncedwriter; in class declaration , switched variable call through class , not object. suppressing synchronous_writing syncedwriter; not mandatory, still, doesn't change problem.

my second problem syncedwriter.writer () won't work, don't understand why since constructor public, still can't access it. synchronous_writing.writer () work, compiler keeps saying syncedwriter variable not used (which quite true, since constructor initialized)

in end, both codes botched in way, , know properly, please feel free give insights.

static in java means, method not know context except passed parameters , other static variables.

you trying create context in synchronous_writing , call static method on context. calling method without step initialize context in synchronous_writing case exception. bad practice , not self-explanatory code.

if need static method, make sure doesn't depend on context needs initialized.


Comments

Popular posts from this blog

How has firefox/gecko HTML+CSS rendering changed in version 38? -

javascript - Complex json ng-repeat -

jquery - Cloning of rows and columns from the old table into the new with colSpan and rowSpan -