- ベストアンサー
基本的な構文について
いつも参考にさせて頂いています。 基本的なことなのですが、宜しくお願いします。 以下のBeanクラスがあるとします。 -------bean class public class Bean { private String str; public String getStr() { return str; } public String setStr(String str) { this.str = str; } } --------------- プロパティstrを取得してあるメソッドに引数として渡す場合、1と2ではどちらが適切でしょうか? 1. public class Test { Bean bean = new Bean(); String testStr = bean.getStr(); methodAAA( testStr ); } 2. public class Test { Bean bean = new Bean(); methodAAA( bean.getStr() ); } 1のほうが新しいオブジェクトを作成してしまうのでコストがかかってしまう気がするのですがいかがでしょうか。 methodAAA( bean.getStr(). … )と長くなる場合は一度違うオブジェクトに格納したほうがいいとか… 双方ともにメリットデメリットあるとは思いますが、噛み砕いて説明して頂けると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- i2719
- ベストアンサー率35% (11/31)
- kuruthiusu
- ベストアンサー率15% (10/65)
- kuruthiusu
- ベストアンサー率15% (10/65)
関連するQ&A
- JAVAの継承について
JavaでクラスA,B,Cがあり、A,BはクラスCを継承しています。 この時にAのインスタンスを生成しCにある変数に値を設定します。 この設定した情報をBのインスタンスに一気に設定することは可能でしょうか? やりたいこととしてはAに設定した情報をBにコピーするようなイメージです。 すべてのsetterを呼びだして設定するのが面倒なので。 例)構文的に間違ってるかもしれませんがやりたいことは以下のような感じです。 A a = new A(); a.setStr("aaa"); a.setInt(5); B b = new B(); b.setStr(a.getStr()); b.setInt(a.getInt(); class A extends C{} class B extends C{} class C { int x = 0; String str = ""; private String setStr(String str){this.str=str;} private String setInt(int i){this.x=i;} private String getInt(){return this.x;} private String getStr(){return this.str;} }
- ベストアンサー
- Java
- フォームBeanのメソッド内で変数の呼び出しでエラーとなる
初歩的な質問かと思いますが、下記について教えてください。 以下のようなソースがあり、フォームBeanのvalidateメソッドのところで 検証を行うプログラムを書きたいと思っています。 しかし、(1)のところで、InputForm クラスの外で定義している変数を扱う ことができず、以下のエラーが発生します。 エラー: No variable or field with this name could be found at this location. どのようにすれば、フォームBeanの中でtest1などの値を呼び出すことができますか? なぜ、呼び出すことができないのでしょうか? よろしくお願いいたします。 ================================== public class controller extends PageFlowController { String test1 ="aaa"; ・・・ /** * @jpf:action * @jpf:forward name="success" path="index.jsp" */ protected Forward form() { //ここでtest1は呼び出せる。 string test2= test1; ・・・ } ・・・ public static class InputForm extends FormData { private String str1; ・・・ public void setStr1(String str1) { this.str1 = str1; } public String getStr1() { return this.str1; } ・・・ public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) { ・・・ //ここでtest1を呼び出すことができない。 String tmp = test1; ・・・ } } }
- ベストアンサー
- Java
- メソッドの中に、作ったメソッドを呼び込みたいんですが
メソッドの中に、作ったメソッドを呼び込みたいんですが シグネチャを int argCheck(String args[]) に指定して、 引数のチェック処理メソッドというものを作成してるんですが、 よくわからないんです。 内容は (1) 引数の数が1個でない場合、1を返却 (2) 引数が『aaa』でも『ZZZ』でもない場合、99を返却 (3) 以外は、0を返却 public class Test { public static void main(String args[]) { Test test = new Test(); int result = test.argCheck(args); test.argCheck(); //メソッドを呼び込み } private int argCheck(String args[]) { if(args[0].length != 1) // 引数の数が1以外の場合 { return 1; // 1を返す } else if (!args[0].equalsIgnoreCase("aaa") && !args[0].equalsIgnoreCase("ZZZ")) //引数が aaa でも ZZZ でもない場合(大/小文字区別せず) { return 99; // 99を返す } else // それ以外の場合 { return 0; // 0を返す } } }
- ベストアンサー
- Java
- 文字の表示
オブジェクトを受け取るメソッド ↓は引数にString型のオブジェクトを指定するプログラムです public class Sample { public static void main(String args[]) { String str = "abcd"; change(str); System.out.println(str); } private static void change(String str) { str = "efgh"; } } 私の中ではefghがでると思っていたんですが・・ これを実行してみると変数strに最初に代入した文字列が表示されるんです! なぜですか? できれば理由を教えてください 回答よろしくお願いします
- 締切済み
- その他(趣味・娯楽・エンターテイメント)
- StrutsでJSPからListを受け取りたい
JSPに複数のhidden(動的に数が変化)があり、これらの値をformのlist(配列)に詰めたいです。 尚、nameの値は別の処理でjavascriptを使いvalueを変化させるため連番であれば構わないです。です。 ~~~JSP~~~ <input type="hidden" name="str1" value="a"/> <input type="hidden" name="str2" value="b"/> <input type="hidden" name="str3" value="c"/> ~~~~~~~~ 上のJSPから下記のFORMに詰めたい ~~~form~~~ private List strList; public List getStrList(){ return strList; } ~~~~~~~~ 又、こちらで調べたところ下記のようにすればいけるようですが欲しい値は一つのためBeanを使用しなくても実現可能ではないかと思い、質問させていただきました。 よろしくお願い致します。 ~~~JSP~~~ <input type="hidden" name="testArray[0].str" value="a"/> <input type="hidden" name="testArray[1].str" value="b"/> <input type="hidden" name="testArray[2].str" value="c"/> ~~~~~~~ ~~~FORM~~~ private List list; public TestBean getTestA(int iIndex) { while (this.list.size() <= iIndex) { this.list.add(new TestBean ()); } return ( TestBean ) this.list.get(iIndex); } public Object[] getTestArray() { return list.toArray(); } public static class TestBean { private String str = ""; public String getStr() { return str; } public void setStr(String str) { this.str = str; } }
- ベストアンサー
- Java
- パラメータのやりとり
3つのクラスの中でHTML上から取得したパラメータをやり取りしたいと思っています。 1つ目のクラス(CLASS_1.java) public class CLASS_1 extends CLASS_0 { public void doMain(HttpServletRequest request,HttpServletResponse response){ try{ String[] str = makeItem(request); CLASS_2 class_2 = new CLASS_2(); class_2.setItem(str); private String[] makeItem(HttpServletRequest request){ String[] result = new String[3]; result[0] = request.getParameter("test1"); result[1] = request.getParameter("test2"); result[2] = request.getParameter("test3"); return result; 2つ目のクラス(CLASS_3.Java) public class CLASS_3{ public void setItem(String[] data){ } public boolean makeTEXT(){ return true; } public ByteArrayOutputStream getTEXT(){ return null; } } 3つ目のクラス(CLASS_2) public class CLASS_2 extends CLASS_3 { public boolean makeTEXT(){ return true; } } という3つのクラスを作成しました。 CLASS_1で取得したstrの中の値をCLASS_2で使用したいと考えています。 ただ羅列するだけでかまいませんので、わかるかたヒントや参考になりそうなHPなどありましたら よろしくお願いします。
- 締切済み
- Java
- インターフェイス実装クラスの表示について
/* インタフェースPlanetを実装したクラスEarth、Marsがあります。 以下の実行結果になるようにクラスAggregateへshowメソッドを 追加してください。 [実行結果] 地球 太陽系にある惑星の1つで、太陽から3番目に近い。・・・ 火星 太陽系の太陽に近い方から4番目の惑星である。・・・ */ // [Planet.java] // 実装したいPlanetクラス interface Planet { public String getName(); public String getOutline(); } // Planetを実装したEarthクラス // [Earth.java] class Earth implements Planet { private final String name="地球"; // getNameメソッド:戻り値String、引数無し public String getName(){ return name; } // getOutlineメソッド:戻り値String、引数無し public String getOutline(){ return "太陽系にある惑星の1つで、太陽から3番目に近い。・・・"; } } // Planetを実装したMarsクラス // [Mars.java] class Mars implements Planet { private final String name="火星"; // getNameメソッド:戻り値String、引数無し public String getName(){ return name; } // getOutlineメソッド:戻り値String、引数無し public String getOutline(){ return "太陽系の太陽に近い方から4番目の惑星である。・・・"; } } // メインクラス // [Main.java] class Main{ public static void main(String[] args){ // Earth&Marsクラスのインスタンス化 Earth earth = new Earth(); Mars mars = new Mars(); // Aggregateクラスのインスタンス化 Aggregate aggregation = new Aggregate(); // showメソッド呼び出し:戻り値無し、引数earth・mars aggregation.show(earth); aggregation.show(mars); } } // [Aggregate.java] class Aggregate { // ここにshowメソッドを追加 public void show(Earth planet){ System.out.println(); } public void show(Mars planet){ System.out.println(); } } showメソッドに引数としてEarth planet,Mars planetを渡すというところまでは理解しています。後は星の名前と概要を表示するのですが、例えば、 showメソッド内 // ここにshowメソッドを追加 public void show(Earth planet){ String str = earth.getName(); System.out.println(str); } public void show(Mars planet){ String str2 = mars.getOutline(); System.out.println(str2); } } とすると、erathとmarsの部分が「シンボルがありません」のエラーになります。自分の認識としては、EarthクラスとMarsクラスでフィールド変数を宣言しているので使えるのでは?と思っていたのですが、全然違うようです。どなたかどちらかのコード例を表記して頂けないでしょうか?よろしくお願い致します。
- ベストアンサー
- Java
- カスタムタグで日本語の文字化けを解決できない
カスタムタグでパラメータから取得した日本語の文字化けを解決できません。 実行しているのは以下のソースです。 test.java package test; public class test extends javax.servlet.jsp.tagext.TagSupport{ private static final long serialVersionUID=1L; private String testStr; public void setTestStr(String testStr){ this.testStr=testStr; } //タグの開始時に実行されるメソッド public int doStartTag() throws javax.servlet.jsp.JspException{ try{ response.setContentType("text/html;charset=UTF-8"); pageContext.getOut().write(new String(this.testStr.getBytes("8859_1"),"JISAutoDetect")); }catch(java.io.IOException e){ throw new javax.servlet.jsp.JspException(e.getMessage()); } return SKIP_BODY; } } test.jsp <%@ page contentType="text/html;charset=UTF-8"%> <%@ taglib uri="custom" prefix="custom"%> <html> <head><title>test</title></head> <body> <custom:test testStr="${param.test}" /> </body> </html> どのようにすれば解決できるでしょうか。
- ベストアンサー
- Java
- Javaの構文について
よろしくお願いします。 以下のようなJavaのプログラムがあるのですが、 Object str = new Object[]{"test"}; 右辺のnew Object[]{"test"}は、何をやっているのでしょうか? どなたかご教授願います。
- ベストアンサー
- Java
お礼
詳しい説明ありがとうございます。 なんとなく仕組みが理解できました。 また何かあれば宜しくお願いします。 本当にありがとうございました!!