###インスタンスメソッドがインスタンスを生成しないで使われている?
javaを勉強中のものです。
本のサンプルコードを読み進めていき、分からないところが出てきました。
下記に示すコードのfactory = (Factory)Class.forName(classname).newInstance();
という部分についてです。
本でforName()
というメソッドは、java.lang.Class
のクラスメソッドと紹介されていました。それは納得したのですが、このnewInstance()
という部分。こちらはjava.lang.Class
のインスタンスメソッドと紹介されていました。
私はインスタンスメソッドを、インスタンスを生成し、その後で使うものと理解していました。しかし、このコードではjava.lang.Class
のインスタンスを生成してないように思われます。
それならばnewInstance()
が使えないはずなのですが・・・これはどういうことでしょう?
以下にコードを示します。
lang
1package factory; 2 3public abstract class Factory { 4 public static Factory getFactory(String classname) { 5 Factory factory = null; 6 try { 7 factory = (Factory)Class.forName(classname).newInstance();//この部分です! 8 } catch (ClassNotFoundException e) { 9 System.err.println("クラス " + classname + " が見つかりません。"); 10 } catch (Exception e) { 11 e.printStackTrace(); 12 } 13 return factory; 14 } 15 public abstract Link createLink(String caption, String url); 16 public abstract Tray createTray(String caption); 17 public abstract Page createPage(String title, String author); 18} 19
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/11 08:27