Java入門・初心者質問スレ [無断転載禁止]©5ch.io
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2016/05/12(木) 05:18:33.40ID:nzHoBPh80855デフォルトの名無しさん
2016/10/28(金) 06:20:08.37ID:ZSEeTNr3List<? super A> list = new ArrayList<A>();
のようにsuperで型宣言した場合、
list.get(); した時に全部Object型になります。
? の部分にどんな型が来ても互換性が取れるようにってことだと思うんですが、
それなら極力 super なんて使わずに、
List<A> list = new ArrayList<A>();
にするほうがいいと思うんですが、ジェネリクスでの<? super *>の活用しどころってどういうケースでしょうか?
0856デフォルトの名無しさん
2016/10/28(金) 06:43:40.93ID:l/3+OTVv0857デフォルトの名無しさん
2016/10/28(金) 12:17:18.19ID:0c0ESAbt出力のみに使う型はextends
入力のみに使う型はsuper
入出力両方で使う型には変性を付けない
0858デフォルトの名無しさん
2016/10/28(金) 14:29:30.59ID:dom53pU3例えばDBにアクセスするutilなどです。
0859853
2016/10/28(金) 16:02:47.03ID:wDKSwFbgネット環境が無いんです。
0860デフォルトの名無しさん
2016/10/28(金) 16:21:15.04ID:GNbMn5al0861859
2016/10/28(金) 18:22:32.29ID:wDKSwFbgガラプーって表示されてないですかね?
パソコンがオフラインです。携帯から書き込んでます。ガラケーです。
0862デフォルトの名無しさん
2016/10/28(金) 21:40:52.11ID:EqqPNtKi黒本は初心者ならbronzeからやったほうがいいのでしょうか?
0863デフォルトの名無しさん
2016/10/29(土) 02:44:29.93ID:4FyVr6lP@resouceでインジェクトされないんです。どうしてですか?
0864デフォルトの名無しさん
2016/10/29(土) 03:51:39.00ID:qP5vgiL/実際のSilverの問題は、わざとか難しい部分を繰り返し聞いてくるので簡単ではありませんよ。
Bronzeから受けてください。
国家試験と違って出題範囲をまんべんなく聞いてくる試験ではないのと、試験が短いのでSilverはあせります。
0865デフォルトの名無しさん
2016/10/29(土) 04:39:13.23ID:29FSllRnブロンズを71点でギリギリ取って3日後にシルバー97点だった。
0866デフォルトの名無しさん
2016/10/29(土) 09:40:34.45ID:JrxI+Gxs変態か、簡単な問題セットに当たったんだろうな。
0867デフォルトの名無しさん
2016/10/29(土) 17:56:15.23ID:ePGlEX2J話の繋がりがわからない。
なんでプログラムを複数のパッケージに分ける話からネット環境の話に飛ぶ?
パッケージに分けるのにネット関係なかろう。
0868859
2016/10/29(土) 20:30:31.50ID:TXDQcz+f上で、実際にやってみたら、と提案されたので、ネット環境が無いのでそれは出来ないんです、と伝えたわけです…。
0869デフォルトの名無しさん
2016/10/29(土) 21:25:41.35ID:tec52ry+気になることがあったので質問させていただきます
参考書には親クラスの型を使って子クラスのインスタンスを参照する参照変数を宣言できると
書いてあったのですが、それをするメリットって何なんでしょう?
例えばHumanクラスを親とするChildクラスがあるとして、
Child child = new Child();
ではなく
Human human = new Child();
とするメリットです
文法上そういうことができるのは理解しましたが、それをすることが何に役立つのかがわからなくて…
まだ自分はそこを気にかけれるレベルではないのだと思いますが、回答いただけるとありがたいです
0870デフォルトの名無しさん
2016/10/29(土) 21:33:58.43ID:Xtl4N18Yサンデープログラミング?
0871デフォルトの名無しさん
2016/10/29(土) 21:38:47.67ID:tec52ry+仕事終わって帰宅してからと休日に細々と勉強してます
元々頭の出来も良くなかったので面白い反面パンクしそうです
0872デフォルトの名無しさん
2016/10/29(土) 22:07:22.05ID:P6pOx9h1抽象化を上げることができて嬉しい
ボンヤリさせとくメリットってのがあるじゃん?
細かいとこまで興味がないっつうか
細かいとこまで感心持ちたくないっつうか
抽象化を一番下げた状態が
Child child = new Child();
の形だよね
interface I {}
class A implements I {}
class B extends A {}
class C extends B {}
class D extends C {}
のとき、
C c = new C();より
B b = new C();より
A a = new C();より
I i = new C();のほうが抽象化されてるよね
こうやって、好きなだけ抽象度を上げていくことができる
そしてこれの何がうれしいのか、については自分で考えてほしいw
0873デフォルトの名無しさん
2016/10/29(土) 22:09:15.81ID:P6pOx9h1抽象度を上げることができて嬉しい
これ削除:
class D extends C {}
0874デフォルトの名無しさん
2016/10/29(土) 22:31:47.93ID:i+DlxK4wローカル変数を抽象化するメリットはあんまりないぞ
0875デフォルトの名無しさん
2016/10/29(土) 22:33:50.82ID:i+DlxK4w自分もわからんっていうならともかく
長々と説教たれてしまいにこんな答えが返ってきたら
もう二度と聞きにいきたくない…
0876デフォルトの名無しさん
2016/10/29(土) 22:48:42.45ID:tec52ry+ありがとうございます
とりあえず今の自分の知識だと理解できないレベルの話だということはわかりました
一旦脇に置いて別の部分を進めていくことにします
>>874
ありがとうございます
応用が出来るようになればメリットが出てくるのですね、スッキリしました
使いこなせるように精進します
いえ、分不相応な質問だったことがわかっただけでも収穫でした
また何かあったら質問させていただきます
0877デフォルトの名無しさん
2016/10/30(日) 00:12:25.83ID:ekX97W9d例えば、配列作りたいとき、
Human[]にしとけば、
ChildもHumanも、他の何かしらのHumanの子クラスも入れとけるじゃん。
実際の処理はChildやら他の子クラス側に書けば、子クラスの追加とか削除とか修正だけで、他の部分に影響を与える事なく機能追加や修正できるっしょ。
同じ道理で、new Childするのをやめて、
static Human createInstance(なんやらかんやら)
と、HumanとかHumanFactortなんかに子クラス作って返すメソッド書けば、どのインスタンスが妥当かも考え無くて済むじゃん。
って事。
0878デフォルトの名無しさん
2016/10/30(日) 00:20:54.82ID:3d0adPIbなんていうかな、あの手の本はほんとにロクなことを教えないよね
0879デフォルトの名無しさん
2016/10/30(日) 00:54:27.06ID:rQxX2zI2継承は、ゲームで使う。
例えば、怪物クラスの子クラスに、毒マタンゴ・ゾンビドラゴンがある時
怪物配列に、毒マタンゴA・B、ゾンビドラゴンA を入れる
for (怪物 monster: 怪物配列){
怪物.攻撃
}
こういうように、個々の種別ではなく、抽象化して怪物として扱った方が、
簡単に書けるし、また仕様変更にも強い
例えば、骸骨剣士A を追加しても、ソースコードを変更する必要がない。
DB内の怪物マスタを、修正すればよいだけ
つまり、オブジェクト指向を使うと、型による分岐が無くなり、ソースコードの変更に強くなる。
もしソースコード内に、型による分岐があれば、抽象化してそれを消すべき
0880デフォルトの名無しさん
2016/10/30(日) 01:07:46.99ID:t4ilsIoO別のところから答えも引き出す
新人にしては恐ろしい子…
0881868
2016/10/30(日) 02:58:58.22ID:tifMCILv0882デフォルトの名無しさん
2016/10/30(日) 09:27:55.22ID:uCf20103アロハー
オフラインでも試せるんじゃ?
0883デフォルトの名無しさん
2016/10/30(日) 14:41:04.36ID:7WMxM/JHこうやって抽象クラスのサブクラスをインスタンス化した時、"AbClass"は出力されます。
public class Main extends AbClass{
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
new Main();
}
}
abstract class AbClass{
public AbClass(){
System.out.println("AbClass");
}
}
javapしてみても、
abstract class main.AbClass
minor version: 0
major version: 52
flags: ACC_SUPER, ACC_ABSTRACT
っていう、ACC_ABSTRACTフラグがついてます。
0884デフォルトの名無しさん
2016/10/30(日) 15:35:58.53ID:fTcBbX+Eその AbClass ってメソッドに一つも abstract がないよな。
だから Main クラスに継承した段階で全てのメソッドが定義された(元からそうだけど、これで完全にabstractクラスではなくなる)ということだと思うが。
0885デフォルトの名無しさん
2016/10/30(日) 15:37:31.85ID:fTcBbX+Eなんで実際にやるのにネット環境が必要なんだよ。
複数のパッケージに分けるだけならネットに繋がってなくてもできる、てかネット関係ないだろう。
0886デフォルトの名無しさん
2016/10/30(日) 15:48:29.79ID:zpgPT2nVだったら回線切ってやってみろや
結果を書け、それで解決するだろ
0887デフォルトの名無しさん
2016/10/30(日) 15:49:41.97ID:zpgPT2nVいったい何の作業をするのか見ものですね
0888デフォルトの名無しさん
2016/10/30(日) 16:13:14.82ID:asmRMmwq887が言っている複数の「パッケージに分ける」というフレーズは
我々の知っている作業とは違う作業を指していると思われる
そうでないとここまで自信満々な理由が分からん
俺だったら1週間はこのスレ開かないわ
0889デフォルトの名無しさん
2016/10/30(日) 16:13:21.76ID:qgjs7ee50891デフォルトの名無しさん
2016/10/30(日) 19:53:13.17ID:uaaD1pSqそれならパッケージを分ける分けないなんて気にする必要ないだろ
教えたところで実行できないんだから
学校や職場に行けば実行環境があるってんなら、そこで試せ
0892デフォルトの名無しさん
2016/10/30(日) 19:59:47.72ID:zpgPT2nV偉そうなくせに大したこといってなくて草
わからないなら黙ってろよ雑魚
0893デフォルトの名無しさん
2016/10/30(日) 20:00:27.65ID:zpgPT2nV俺は応援してるぞ、ここに巣くうサルレベルの知能の雑魚どもに負けるな
0894デフォルトの名無しさん
2016/10/30(日) 20:15:47.63ID:OuHrL0RN0895デフォルトの名無しさん
2016/10/30(日) 20:50:51.91ID:asmRMmwq0896デフォルトの名無しさん
2016/10/30(日) 20:53:31.00ID:zpgPT2nVはい雑魚2匹目
0897デフォルトの名無しさん
2016/10/30(日) 20:54:11.88ID:zpgPT2nV0898デフォルトの名無しさん
2016/10/30(日) 20:59:43.05ID:Z+Cepnas複数のパッケージに分けるだけなら簡単だろうがよ。
先頭に packge とパッケージ名入れるだけ。使う側はそのまま指定するか import するだけ。
てか、なんでネット必要なんだ?お前は何を想像しながら「複数のパッケージに分ける」と言っている?
0899デフォルトの名無しさん
2016/10/30(日) 21:06:46.67ID:zpgPT2nV簡単ならさっさとやれよ、結果をレポートしろ
簡単なんだろできるよな
0900デフォルトの名無しさん
2016/10/30(日) 21:07:32.67ID:Z+Cepnasあ、JDKのダウンロードができないって話か。
どこかダウンロードできる環境でダウンロードしてUSBメモリにでも入れて持ち帰れば?
まあでもネット環境は何とかして用意した方がいいと思うよ。
携帯をテザリングもできるスマホに変えて無線LAN接続とか、回線増やさずにネットに繋げる方法もあるよ。
契約内容に気を付けないと高くなるかも知れないけど。(あとPCに無線LANないとダメだな。有線でテザリングできるならなんとかなるかも知れないけど)
0901デフォルトの名無しさん
2016/10/30(日) 21:09:05.12ID:zpgPT2nVお前が自分でやれば済む話だろうが、横着すんな
0902デフォルトの名無しさん
2016/10/30(日) 21:10:03.72ID:Z+Cepnasあたりまえだろ。おまえバカか?てか大丈夫か?
0903デフォルトの名無しさん
2016/10/30(日) 21:11:20.23ID:Z+Cepnasお大事に。
0904デフォルトの名無しさん
2016/10/30(日) 21:14:51.93ID:zpgPT2nV0905デフォルトの名無しさん
2016/10/30(日) 21:25:06.45ID:+8NL+Ds10906デフォルトの名無しさん
2016/10/30(日) 21:28:24.47ID:+8NL+Ds10907デフォルトの名無しさん
2016/10/30(日) 22:04:29.62ID:asmRMmwq草
0908890
2016/10/31(月) 00:47:32.32ID:G6HLyhYbネットが繋がるまで本(スッキリJava)で独習しています。
前述のパッケージの分割コンパイルの項目が読んでて理解できなかったので質問させて貰いました。
0909デフォルトの名無しさん
2016/10/31(月) 02:15:35.73ID:sJgNRiliリクエスト毎にインスタンスを生成するControllerクラスがあります。
ControllerクラスにServiceクラスをインスタンス変数として、DIコンテナでインジェクトします。
この際に、DIのライフサイクルをシングルトンにします。
1回目のリクエストのControllerクラスでは indexメソッド内でserviceのメソッドがメソッド内で呼ばれるとします。
2回目にリクエストでもController.indexメソッドが呼ばれます。
この時、serviceクラスはnullでしょうか?
それとも1回目のControllerクラスでDIしたインスタンスが2回目も使われるのでしょうか?
0910908
2016/10/31(月) 02:18:51.56ID:G6HLyhYbそうだとしたら不快な思いをした方すいません。
持っているパソコンのOSがXPなんでネットに繋げないんです。新しいOSを入れる容量も無いんで新しく買おうと思っています。
0911デフォルトの名無しさん
2016/10/31(月) 07:34:49.69ID:sEDt+ZDb同じインスタンスがDIされる
0912デフォルトの名無しさん
2016/10/31(月) 08:38:04.45ID:r/gQTNbf恒例の「外野が勝手に騒いでるだけ」だから気にしなくていいよ
0913デフォルトの名無しさん
2016/10/31(月) 08:52:18.47ID:X5kXOLud0914デフォルトの名無しさん
2016/10/31(月) 10:01:24.16ID:3MWuUQcBLinux 入れればいいのでは?
Ubuntu とか本屋でDVD付きで売ってたりするからインストール自体はネットなしでもできる。
0915909
2016/10/31(月) 12:01:32.93ID:sJgNRiliありがとうございます。もう1つ質問させてください。
ではServletとDIコンテナを併用して使う場合のケースです。
サーブレットクラスのインスタンス変数にserviceクラスを持つとします。
通常だとServletはシングルトンなのでクラスのインスタンス変数はスレッドセーフではないですが、
DIコンテナの設定をリクエスト毎にした場合は、
1回目、2回目、3回目・・・と
アクセスされるたび、serviceにインスタンスがDIされますか?
それとも呼び出し元のクラスが新たにインスタンス生成されないので同じインスタンスが共有されますか?
0916デフォルトの名無しさん
2016/10/31(月) 20:08:38.55ID:RYpBavAYassertThat(resurt, is(not(0));
resurtの値には0以上の値がランダムに代入される時、0以外をtrueで返す式は上記であってますか?
0917デフォルトの名無しさん
2016/10/31(月) 20:53:46.43ID:p7TPitCzよくわかんねーけど、どのインスタンスがDIされるかなんて制御できないよ。
根本から理解が間違ってる
0918デフォルトの名無しさん
2016/10/31(月) 21:34:08.02ID:sJgNRiliどういうことですか?
0919910
2016/11/01(火) 00:50:00.31ID:68tlbbHFありがとうございます。
Linuxは大学の時にやって苦戦したので、Windowsでいきたいんです…。
0920デフォルトの名無しさん
2016/11/01(火) 00:56:10.41ID:FUOnuiX20921919
2016/11/01(火) 01:41:24.27ID:68tlbbHF地方在住なので近くにネカフェ無いです。
まあもうじき新しいパソコン買うので…。
0923デフォルトの名無しさん
2016/11/01(火) 01:43:14.40ID:68tlbbHF0924デフォルトの名無しさん
2016/11/01(火) 02:50:43.94ID:lWEkG1Wt合っている。実行して確かめろ
それに、resurtは、result だろ
0925デフォルトの名無しさん
2016/11/01(火) 07:21:55.41ID:YKGFAfzSそもそも、どういう事がしたくてそうしてるの?
あと、そこまでいくとDIコンテナにもよるでしょ。
0926デフォルトの名無しさん
2016/11/01(火) 09:11:02.25ID:8QttcA43一応インストールしなくてもCDかDVDでブートして動くようなのあるけどね。インストーラでそういう起動させるかどうか選べる(確かUbuntuもそういう風になってた)。
なので、Windows用の何かをダウンロードしたいだけだとしてもそうやって起動後にUSBメモリ挿してそこにダウンロードするという方法がある。
するとLinuxインストールせずに使えてネカフェに行く必要もなくなる。
まあ、XPでもセキュリティリスク無視するならそのままできるだろうけどね。(Oracleとか、特定のサイトにしか行かないなら多分大丈夫だとは思うが)
0927919
2016/11/02(水) 00:33:40.21ID:T1qBuIQL忙しくてレスが遅くなってしまいすいません。
丁寧にありがとうございました。
技術評論社とかの本はCD-ROMが付いてますね。
俺が買った本はダウンロードを推奨するものでした。
0928デフォルトの名無しさん
2016/11/02(水) 08:12:21.70ID:JaTBDkBi0929デフォルトの名無しさん
2016/11/02(水) 16:46:07.89ID:KtthnrOq0930デフォルトの名無しさん
2016/11/02(水) 18:02:47.63ID:WL73ssGd0931デフォルトの名無しさん
2016/11/02(水) 19:04:14.21ID:6QvosKf/0932デフォルトの名無しさん
2016/11/02(水) 22:16:59.49ID:QrC60bZwhttp://i.imgur.com/RuyhzEA.jpg
なんとこれだけで計算もできる。
0933デフォルトの名無しさん
2016/11/03(木) 01:58:29.25ID:8VAyqA8tequals()でfalseとなるインスタンス同士(パラメータは一緒でインスタンスが違う)でも、同じ値が返ってきます。
0934デフォルトの名無しさん
2016/11/03(木) 02:52:13.45ID:9qfKx4O0ObjectクラスのhashCode()はメモリのアドレスだよ
> equals()でfalseとなるインスタンス同士(パラメータは一緒でインスタンスが違う)
これはObjectクラスではないのじゃないかな
パラメータからハッシュ値を計算するようにオーバライドしてるんでしょ
0935デフォルトの名無しさん
2016/11/03(木) 03:23:17.42ID:0y7uoQTe0936デフォルトの名無しさん
2016/11/03(木) 03:54:34.50ID:QFrf3CuS個別にコンパイルするとサブパッケージが因数の受け渡しで別クラスを認識できずシンボルを見つけられませんエラーが出るのは何が考えられるでしょうか
構成は
main→パッケージ→a
└→b
でmainがabの内容を表示しbが再びaの内容を表示するものです
bを個別にコンパイルするとaのメソッドを参照できず、指定したクラス名を変数名と勘違いしてる感じです
0937デフォルトの名無しさん
2016/11/03(木) 05:16:28.40ID:TDi/4+oIと、していないから
mainファイル内では、
import a
import b
の順番で読み込まれているから、bファイル内で、aのクラスを使えていたとか?
まあ、import宣言する順番に、依存しないかも知れないけど。
漏れは、知らない
0938デフォルトの名無しさん
2016/11/03(木) 14:20:39.76ID:QFrf3CuSですが解決したかもしれないです
環境変数をHPを参考にしてPATHと設定したのですがCLASSPATHとすべきだったのかもしれないと
環境変数の違いなんて全くわからないけど試してみます
0939デフォルトの名無しさん
2016/11/03(木) 20:13:39.41ID:QFrf3CuS0940デフォルトの名無しさん
2016/11/03(木) 21:21:18.02ID:QFrf3CuSスッキリの例題出申し訳ないですがこのプログラムに限らずパッケージをまたごうとするとパッケージやクラスが発見できないエラーが出ます
CLASSPATHを WORK や Calc や calcapp.main に設定しても駄目
PATHは設定してjavaもjavacも通ります
http://i.imgur.com/HIH7mVF.jpg
0941デフォルトの名無しさん
2016/11/03(木) 22:08:01.44ID:CtrzsuW8書いてあるなら、そこまでに説明されていることの何かが欠けてるんだろうよ
書いてないなら、書いてある方法で問題は解けよ
0942デフォルトの名無しさん
2016/11/03(木) 22:08:26.76ID:kVn2ZEfCこれまでC言語を学んで趣味としてプログラミングをやっていましたが、
ひょんなことからJAVA Black bookを入手することになり、いい機会なので新しい風を入れるつもりで
この本でJAVAを学びはじめました。
しかしながら、この本が2000年9月出版で、もしかしたら今と大きく変わった部分があるのではと
心配しています。
そのあたり、ご存知の方にご教示いただけたら幸いです。
0943デフォルトの名無しさん
2016/11/03(木) 22:17:14.22ID:CtrzsuW8少なくとも1.6以降じゃないと、予約語を覚える以外の役には立たない
0944デフォルトの名無しさん
2016/11/03(木) 22:21:30.80ID:QFrf3CuSメモ帳とコマンドプロントを使うって書いてたんでそれが一般的かと思ってたんですが違うんですか?
どっちにしてもこれが通らないのが納得行かないですが
0945デフォルトの名無しさん
2016/11/03(木) 22:36:56.93ID:g7gHuu9bhttps://docs.oracle.com/javase/jp/6/technotes/tools/windows/javac.html
CalcLogicを先にコンパイルして、クラスパスにCalclogic.classファイルの場所を設定するか、
いっこ上のフォルダに上がって、クラスを2つ同時に指定するかで行けんか
0946デフォルトの名無しさん
2016/11/03(木) 22:37:38.25ID:g7gHuu9b0947デフォルトの名無しさん
2016/11/03(木) 22:47:12.50ID:kVn2ZEfCあちゃ〜そんなに変わってますか
JAVAがC言語学習者にとって学びやすい言語であることは今の本のさわりでわかったので、
改めて別の本を買ってみることにします。
0948947
2016/11/03(木) 22:47:37.54ID:kVn2ZEfC0949デフォルトの名無しさん
2016/11/03(木) 23:32:50.63ID:QFrf3CuSPATHはjavaの定義のため、CLASSPATHはクラス指定のためと分かったんですが一つ目の方法では駄目でした
二つ目のクラスを二つ同時に指定するというのが分からないのですが試しにcalcapp.mainとcalcapp.logicsにクラスパスを設定してCalcディレクトリでjavac Calc.java
→Calcファイルが見つからない
calcapp.mainディレクトリでjavac Calc.java
calcapp.logicsが存在しない
複雑な構成のプログラムではないし、何らかの設定でつまづいてる気がするんですが暗中模索がこんなにしんどいとはと実感してます
0950デフォルトの名無しさん
2016/11/03(木) 23:37:47.60ID:x/s1yBiEcalcappディレクトリの下にmainディレクトリ作らないと
0951デフォルトの名無しさん
2016/11/03(木) 23:39:47.53ID:x/s1yBiE0952デフォルトの名無しさん
2016/11/03(木) 23:58:11.81ID:g7gHuu9b0953デフォルトの名無しさん
2016/11/04(金) 00:10:29.41ID:9L4bsxNEその外こんなのも駄目で
javaのバージョンが良くないのか自分を疑うべきなのか
http://i.imgur.com/Ehiljd7.jpg
0954デフォルトの名無しさん
2016/11/04(金) 00:12:46.15ID:tO492IJ7おい普通にいけたぞ
xxx\Calc> C:\Program Files\Java\jdk1.8.0_92\bin\javac" calcapp.main\Calc.java calcapp.logics\CalcLogics.java
レス数が950を超えています。1000を超えると書き込みができなくなります。