★★Java質問・相談スレッド153★★
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/04/15(日) 06:27:39.32JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
(p)ttp://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
★★Java質問・相談スレッド152★★
http://toro.2ch.net/test/read.cgi/tech/1329715551/
0153デフォルトの名無しさん
2012/04/24(火) 14:11:30.220154デフォルトの名無しさん
2012/04/24(火) 14:15:42.24あ、なんか書き方おかしかったですが、パッケージをそのアプリケーション専用の作るか、作らないかって質問でした。
>>153
ありがとうございます。
よく考えたら、全部が全部パッケージに分類しなくてもいいのか。
0155デフォルトの名無しさん
2012/04/24(火) 16:57:24.350156デフォルトの名無しさん
2012/04/24(火) 17:04:02.200157デフォルトの名無しさん
2012/04/24(火) 18:53:41.480158デフォルトの名無しさん
2012/04/24(火) 20:53:26.36AはX-1.0でないと動かない。
BはX-2.0で無いと動かない。
X-1.0とX-2.0の仕様は部分的に非互換で部分的に互換。
つまり似ている部分は有るが共存はできない。
こういう場合はどうすれば…
0159デフォルトの名無しさん
2012/04/24(火) 20:54:00.950160デフォルトの名無しさん
2012/04/24(火) 21:21:32.440161デフォルトの名無しさん
2012/04/24(火) 22:17:17.07A,B両方を使うDがどっちのXを参照すべきかは他人に判断できない問題
0162デフォルトの名無しさん
2012/04/24(火) 22:48:16.33あれは何の意義があるんでしょうか?new Type();と比べ何のメリットがあるんでしょう?
0163デフォルトの名無しさん
2012/04/24(火) 22:51:36.322 やってみたかっただけ
3 知能に問題がある人が書いた
0164デフォルトの名無しさん
2012/04/25(水) 06:08:05.14> 1 今後変えていくかもしれんのでnewでインスタンスつくんなおという願い
なら、コンストラクタ不可視にすんだろ。
> 2 やってみたかっただけ
> 3 知能に問題がある人が書いた
これはあるある
4 内部でうまいことキャッシュしてやるからnewInstance使え。キャッシュとか
別にいらねーなら勝手にnewしろ。そのかわり自分で面倒見ろよ
大抵は3か4だろう。2は殴れ。3は殴るな後が怖い。
0165デフォルトの名無しさん
2012/04/25(水) 06:52:14.810166デフォルトの名無しさん
2012/04/25(水) 08:52:47.690167デフォルトの名無しさん
2012/04/25(水) 11:52:19.93相手は超初心者なんだからもう少し優しく教えてあげないと。
さもなくばスルーでOK
0168デフォルトの名無しさん
2012/04/25(水) 12:08:04.14staticファクトリーメソッドで調べてごらん
0169デフォルトの名無しさん
2012/04/25(水) 12:50:03.470170デフォルトの名無しさん
2012/04/25(水) 14:15:45.830171デフォルトの名無しさん
2012/04/25(水) 14:58:43.99シングルトン
インスタンスの数を常に1つにしたい場合に使う
0172デフォルトの名無しさん
2012/04/25(水) 15:00:37.73class Foo<T extends Hoge> {
public int insert(List<T> entitylist) { /* ... */ }
public int insert(List<Long> primaryKeyList) { /* ... */ }
}
とあるとき、java.lang.LongはHogeのサブクラスではないのに同じメソッドイレイジャだとコンパイルエラーになります。
総称型のextendsによる限定は考慮されない仕様なのでしょうか。
0173デフォルトの名無しさん
2012/04/25(水) 15:16:58.700174デフォルトの名無しさん
2012/04/25(水) 16:18:00.39List<Foo>もList<Baa>もただのListとなるから同じとみなされるわけですね。
erasureの動きが少し理解できました。
ありがとうございました。
0175デフォルトの名無しさん
2012/04/25(水) 18:46:45.000176デフォルトの名無しさん
2012/04/25(水) 19:27:17.23シングルトンはnewInstance()なんて名前普通つかわんだろ
0177ora!
2012/04/25(水) 19:52:13.02[Java の旧バージョンと関連文書の入手先]
http://www.java.com/ja/download/faq/other_jreversions.xml
0178デフォルトの名無しさん
2012/04/25(水) 20:07:39.23死ねよ
0179デフォルトの名無しさん
2012/04/26(木) 00:27:03.13>>162がよく見るソースコード見てみたいものだ
0180デフォルトの名無しさん
2012/04/26(木) 00:37:19.910181デフォルトの名無しさん
2012/04/26(木) 01:10:26.08Javaの型パラメータは、コンパイル時に除去されてObject型になってしまうのだよ。
この性質のことをイレイジャという。
そんなわけで、おまえさんが例示した2つのメソッドは同じシグネチャになってしまいコンパイルエラーになるわけだ。
0182デフォルトの名無しさん
2012/04/26(木) 02:14:23.87よし覚えた。
0183デフォルトの名無しさん
2012/04/26(木) 03:54:24.160184デフォルトの名無しさん
2012/04/26(木) 12:32:33.55俺にきくなよ
0185デフォルトの名無しさん
2012/04/26(木) 13:07:39.15うざいだけです
0186デフォルトの名無しさん
2012/04/26(木) 18:33:31.140187デフォルトの名無しさん
2012/04/26(木) 21:43:41.280188デフォルトの名無しさん
2012/04/26(木) 21:45:54.50調べましたけど何でstaticなんでしょうね。
インスタンスメソッドにしたって大したコストにならないでしょうに。
0189デフォルトの名無しさん
2012/04/26(木) 22:10:27.71アーキテクチャにもよるけど、JNI1回で10-50msぐらいかかる。
SSE使うだけのジョークアプリになるね。
0190デフォルトの名無しさん
2012/04/26(木) 22:27:00.050191デフォルトの名無しさん
2012/04/26(木) 22:43:23.68あくまで俺が使ったときの一例の話だけどgccの自動ベクトル化より速かった
0192デフォルトの名無しさん
2012/04/27(金) 00:07:33.40List<SyndEnclosure> enclist = new ArrayList<SyndEnclosure>();
SyndEnclosure enc = new SyndEnclosureImpl();
enc.setUrl(image_path.toString());
enc.setType("image/jpeg");
enc.setLength(image_file.length());
enclist.add(enc);
entry.setEnclosures(enclist);
どこか問題ありますでしょうか・・・
0193デフォルトの名無しさん
2012/04/27(金) 00:08:54.32java8からはmulticoreの活用はもちろん基本的に内部イテレータ仕様がメインになるようなので、java5 generics typeの時と同じく次回の改訂はjava languagesのパラダイムシフトになるかなと思います。
0194デフォルトの名無しさん
2012/04/27(金) 00:39:51.99ラムダ使った並列化はMIMDだろ
0195デフォルトの名無しさん
2012/04/27(金) 01:06:27.15public class SuperClass{
public static void main(String[] args){
}
}
public class SubClass extends SuperClass{
}
こんな感じで、SubClassで起動した場合に
mainの中で起動したクラス(SubClass)を取得したいのです。
0196デフォルトの名無しさん
2012/04/27(金) 06:51:13.43> 9年ぶりに言語仕様を改訂予定
http://ja.wikipedia.org/wiki/Java#Java_SE_8
0197デフォルトの名無しさん
2012/04/27(金) 08:57:14.77乱数の重複を防ぎたいのですがどうすれば良いですか?
ネットでいろいろな方法を調べたのですが、どれも上手くいきませんでした。
import lib.Input;
public class Sample1{
public static void main(String[] args){
int a = Input.getInt("何人に配りますか?(2〜5)");
for (int i=1;i<=a;i++){
System.out.println(i+"人目の手札は以下のとおりです.");
System.out.println(cards()+""+cards()+""+cards()+""+cards()+""+cards());
}
}
public static String cards(){
String[] a = {"ハート","クラブ","ダイヤ","スペード"};
int b= (int)((Math.random()*13)+1);
int c= (int)(Math.random()*4);
int c_b = (int)(Math.random()*53);
String d = a[c] + "の" + b +" ";
if(c_b==0){
d="ジョーカー";
}
return d;
}
}
0198デフォルトの名無しさん
2012/04/27(金) 08:59:40.72あらかじめ使えるカードの一覧を作っておいて使用済みのチェックを入れる。
0199デフォルトの名無しさん
2012/04/27(金) 09:54:25.99間違いだから削除した
0200デフォルトの名無しさん
2012/04/27(金) 11:08:27.44配列に52枚のカードを入れて、それをランダムにシャッフルして、先頭から順にめくっていく
0201デフォルトの名無しさん
2012/04/27(金) 11:21:05.05重複しない膨大な整数系列を高速省メモリで吐いてくれるアルゴリズムの
疑似乱数クラスは、探せばある。
トランプにはオーバースペックか。
0202デフォルトの名無しさん
2012/04/27(金) 11:21:12.39http://sasuke.main.jp/java.htmlに「トランプのシャッフル」ってのがある
0203デフォルトの名無しさん
2012/04/27(金) 12:36:20.05クラスをコントラクトすること=インスタンス化(クラス名 変数名=new クラス名();)
インスタンス化された変数をインスタンス
メソッドや変数をまとめて1つのクラスとして独立させることをカプセル化
このような解釈であってますでしょうか。。。
初歩的な質問で申し訳ないのですがサイトなどでの説明がわかりにくかったもので、
誤った理解をしていればご指摘頂ければ幸いです。
0204デフォルトの名無しさん
2012/04/27(金) 14:36:48.75【インスタンス化】
● クラスからオブジェクトを作ること。
● コンストラクタの呼び出しによって、メモリ上に、新たに生成される
オブジェクト用のメモリの領域を確保すること。
【カプセル化】
● クラスの外部からはフィールドを直接操作できないようにして、必ずメソッドを
経由してフィールドを間接的に操作するようにすること。
0205デフォルトの名無しさん
2012/04/27(金) 16:13:09.200206デフォルトの名無しさん
2012/04/27(金) 17:48:04.46ありがとうございます、
0207デフォルトの名無しさん
2012/04/27(金) 18:13:03.93public class SuperClass {
static Class subclass=SuperClass.class;
public static void main(String[] args) {
System.out.println(subclass.getName());
}
}
public class SubClass extends SuperClass{
static {
subclass = SubClass.class;
}
}
もしくは
public class SuperClass {
public static void main(String[] args) {
todo(SuperClass.class);
}
public static void todo(Class subclass){
System.out.println(subclass.getName());
}
}
public class SubClass extends SuperClass {
public static void main(String[] args) {
todo(SubClass.class);
}
}
0208デフォルトの名無しさん
2012/04/27(金) 18:46:54.53いえいえ
0209デフォルトの名無しさん
2012/04/27(金) 19:14:47.21>>200
理論的には分かりやすい説明ですが、ググったりしたのですが具体的なやり方がぜんぜんわかりません。
0210デフォルトの名無しさん
2012/04/27(金) 19:42:56.252.乱数を2つ発生させて、2つの数字の指し示す配列の中身を入れ替える。
3.気が済むまで2を繰り返す。
とかなら簡単じゃないかな
0211デフォルトの名無しさん
2012/04/27(金) 19:47:39.74出来合いのなら→>>202のやつ
http://sasuke.main.jp/toranpu.html
0212デフォルトの名無しさん
2012/04/27(金) 20:13:07.350213デフォルトの名無しさん
2012/04/27(金) 20:49:12.140214デフォルトの名無しさん
2012/04/27(金) 22:35:00.080215デフォルトの名無しさん
2012/04/28(土) 00:21:40.44同じものがないのだよ
java.utilで使えそうなインタフェースがSet
こんな感じで、作るものの本質を知ることからはじめるのがプログラミング
制御したい物をどのように組み立てるのか、よく考えるところからはじめよう
これは言語云々の話じゃないけど、心の片隅にでもとりあえず置いてほしい
フィールドとしてSet<Card> cardSet = new 何とかSet<Card>();
cardSetから取り出されたものもさらに別のSetにぶち込む
そのときにコレクション.ソート機能をつかってコンパレートする
イメージは伝わったかな
0216デフォルトの名無しさん
2012/04/28(土) 00:27:37.12int number
enum Type {
スペード("スペードマーク")、ダイヤ("ダイヤ");
final String マーク;
Type (String マーク) {
初期化
}
}
必要があればenumコンストラクタのフィールドをどんどん追加すればいいのかな
enum内にstatic なメソッドも持たせられるのでいろいろ使い道があると思う
0217デフォルトの名無しさん
2012/04/28(土) 00:34:03.060〜51の乱数を発生させ得られた数番目の要素をAから削除しBに追加
乱数の範囲を1減らして↑を繰り返す
0218デフォルトの名無しさん
2012/04/28(土) 02:14:40.500219デフォルトの名無しさん
2012/04/28(土) 09:50:03.85>>200の方法をとるのは後ろからになってるけどざっと実装してみた。参考にどうぞ。
import java.util.Random;
import java.util.Arrays;
public class RandomSet{
public static void main(String[] args){
//0 〜 LIMIT-1 の重複しないint配列を用意
int LIMIT = 52;
int[] rand = new int[LIMIT];
for(int i=0;i<LIMIT;i++){
rand[i] = i;
}
//配列をシャッフルする
Random r = new Random();
int temp = -1;
for(int i=LIMIT;i>0;i--){
int index = r.nextInt(i);
temp = rand[index];
rand[index] = rand[i-1];
rand[i-1] = temp;
}
//出力
System.out.println("0 〜 "+(LIMIT-1)+" までの重複しない乱数列");
for(int i=1;i<=LIMIT;i++){
System.out.printf("%3d",rand[i-1]);
if(i%10==0){
System.out.println();
}
}
System.out.println();
}
}
0220デフォルトの名無しさん
2012/04/28(土) 09:59:28.020221デフォルトの名無しさん
2012/04/28(土) 10:58:35.940222デフォルトの名無しさん
2012/04/28(土) 11:20:25.290223デフォルトの名無しさん
2012/04/28(土) 11:45:58.540224デフォルトの名無しさん
2012/04/28(土) 12:17:46.130225デフォルトの名無しさん
2012/04/28(土) 12:36:48.510226デフォルトの名無しさん
2012/04/28(土) 13:20:59.290227デフォルトの名無しさん
2012/04/28(土) 15:01:48.46セッター、ゲッターについては以下のような解釈であってますでしょうか。
セッター:異なるクラスのprivateな変数に対し値をセットするためのメソッド
ゲッター:異なるクラスのprivateな変数の値を取得するためのメソッド
0228デフォルトの名無しさん
2012/04/28(土) 15:09:56.20ゲッター:主人公側のロボット
セッター:敵のロボット、実は主人公のオヤジが乗ってた
0229デフォルトの名無しさん
2012/04/28(土) 15:14:28.47フィールド自身は private 宣言で、
フィールドアクセス用のメソッド は public 宣言だよ。
0230デフォルトの名無しさん
2012/04/28(土) 15:19:59.70必ずしもそうとは限らんけどな
Set/Getはprotectedかもしれないし、
Set/Getのあるクラス内にフィールドが存在しないかもしれない。
0231デフォルトの名無しさん
2012/04/28(土) 15:23:33.56ありがとうございます!
0232デフォルトの名無しさん
2012/04/28(土) 15:23:33.560233デフォルトの名無しさん
2012/04/28(土) 15:28:20.83>Set/Getはprotectedかもしれない
例えば、パッケージが1つの場合などはSet/Getは”privateでなければ良い”いう解釈ができるということでしょうか?
>Set/Getのあるクラス内にフィールドが存在しないかもしれない
これについては良くわからないのですが、フィールドが存在しないクラスにSet/Getを用意する必要性が出てくることもあるということでしょうか>
0234デフォルトの名無しさん
2012/04/28(土) 15:30:50.94わざわざメソッドを通すなんて面倒なことをするのは、
後で実装を変更するため。
直接フィールドを持たないような実装に変更することもありうる。
0235デフォルトの名無しさん
2012/04/28(土) 15:35:09.45日時から曜日を計算して返す曜日ゲッターがあってもいい。
0236デフォルトの名無しさん
2012/04/28(土) 15:36:50.64>>233 >>230 の後半はカン違いと思われ…
0237デフォルトの名無しさん
2012/04/28(土) 15:44:33.90Set/Getがメソッドである本質は、物理的なコードの書き換えというより
継承での実行時書き換えのためだろ。
>>233
下についてだが、どこまで素人かしらんけど、
Javaがある程度解るならこんな感じ。
DelivedBはExampleBaseを使える様に
getValue()を用意してるけど、DelivedBとしては
100以外返す必要がないないんで、フィールドをもたない。
interface ExampleBase
{
int getValue();
}
class DelivedA implements ExampleBase
{
private int value;
public int getValue()
{
return value;
}
}
class DelivedB implements ExampleBase
{
public int getValue()
{
return 100;
}
}
0238デフォルトの名無しさん
2012/04/28(土) 15:48:43.47>例えば、パッケージが1つの場合などはSet/Getは”privateでなければ良い”いう解釈ができるということでしょうか?
いや、アクセス権限は関係ないというはなし。別にprivateにしたってset〜()/get〜という形でメソッド定義してりゃ
セッター、ゲッターと呼ばれる。アクセッサーと呼ばれるかどうかは知らんけどな。
0239デフォルトの名無しさん
2012/04/28(土) 16:07:23.94私はVC、VBの経験はありますがJAVA(オブジェクト指向)はまだ記述方法等を順に学んでいる段階のため理解が浅く、
ご教授頂いた内容を理解しきれない部分があります。
とりあえず今の段階ではset〜()、get〜()とネーミングされた、値を設定・取得するためのメソッドという理解に留めておこうと思います。
0240デフォルトの名無しさん
2012/04/28(土) 16:11:27.67蛇足だが、現実でVCの経験があると言うのは控えた方がいい。
VCでC言語をやっていたぐらいにしておかないと
ハイレベルな作業頼まれてトラブる事が有るぞ
0241デフォルトの名無しさん
2012/04/28(土) 16:23:26.610242デフォルトの名無しさん
2012/04/28(土) 16:24:51.270243デフォルトの名無しさん
2012/04/28(土) 16:37:35.10普通VCやってたって言ったら日本では最高レベルのプログラマの称号だし。
VCを本当にやってた人間ならJavaなんて学ぶことなく使えるし
0244デフォルトの名無しさん
2012/04/28(土) 16:42:33.310245デフォルトの名無しさん
2012/04/28(土) 16:46:59.66うちとか約1年ぐらい掛けてゆっくり1つの製品作ってたりするけど。
C++で製品開発はあっても、受注なんてほとんど無くね?
0246デフォルトの名無しさん
2012/04/28(土) 16:48:27.940247デフォルトの名無しさん
2012/04/28(土) 16:52:37.34そもそも、この書き方がおかしい
Microsoft (R) C/C++ Optimizing Compilerとgccを比較してるのか?
統合開発環境全体とgccというコンパイラ比較してんのか?
0248デフォルトの名無しさん
2012/04/28(土) 16:58:32.400249デフォルトの名無しさん
2012/04/28(土) 16:58:51.29C++ のベテランには、C$ は使うが Java は意地でも使わないって人もいるね。
0250デフォルトの名無しさん
2012/04/28(土) 17:00:14.50○ C#
0251デフォルトの名無しさん
2012/04/28(土) 17:03:22.490252デフォルトの名無しさん
2012/04/28(土) 17:03:36.69■ このスレッドは過去ログ倉庫に格納されています