★★Java質問・相談スレッド182★★
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウウー Sa73-AAco [106.132.135.194])
2018/11/19(月) 11:37:06.10ID:C68x9bSiaプログラミング言語Javaに関する質問スレです。
JavaScript, 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
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※
質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。
前スレ
★★Java質問・相談スレッド181★★
https://mevius.5ch.net/test/read.cgi/tech/1518252580/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured
23デフォルトの名無しさん (ワッチョイ 4e9f-n9Ol [175.134.57.7])
2018/12/07(金) 02:50:49.80ID:4kVuFzeP0 >>22
List にキャストすればいいのでは?
List にキャストすればいいのでは?
24デフォルトの名無しさん (ワッチョイ 17b6-IAAP [220.208.88.114])
2018/12/07(金) 04:50:43.67ID:NzONXxAO02522 (ワッチョイ 8fb9-aoeu [180.178.88.6])
2018/12/07(金) 17:13:48.47ID:5Mie+W080 >>23
>>24
ありがとうございました。
ちょっと俺の説明も分かりにくかったと思いますので、
コードを下に書きますね。
List<Object> al = new ArrayList<>();
al.add(new Object {
__int anonymousField = 5;
__void anonymousMethod() {
____System.out.println(anonymousField);
__}
});
al.get(0).anonymousMethod();
こう書くと、匿名クラスはObject型にキャストされているので、
anonymousMethod()を呼べずコンパイルエラーになります。
そこで最終行でキャスト演算子を使おうと思ったのですが、
匿名クラスの型が分からずキャスト出来なかったんです…。
>>24
ありがとうございました。
ちょっと俺の説明も分かりにくかったと思いますので、
コードを下に書きますね。
List<Object> al = new ArrayList<>();
al.add(new Object {
__int anonymousField = 5;
__void anonymousMethod() {
____System.out.println(anonymousField);
__}
});
al.get(0).anonymousMethod();
こう書くと、匿名クラスはObject型にキャストされているので、
anonymousMethod()を呼べずコンパイルエラーになります。
そこで最終行でキャスト演算子を使おうと思ったのですが、
匿名クラスの型が分からずキャスト出来なかったんです…。
26デフォルトの名無しさん (アウアウクー MM3f-+0bq [36.11.225.61])
2018/12/07(金) 17:27:22.40ID:bk7fHByDM 言語の限界に挑む系のチャレンジかなんかしてるのかそれ。
27デフォルトの名無しさん (ワッチョイ 227c-OBpN [123.230.34.235])
2018/12/07(金) 18:02:53.57ID:L+lXnzjp0 interface Hoge {
__void anonymousMethod();
}
...
List<Object> al = new ArrayList<>();
al.add(new Hoge {
__int anonymousField = 5;
__void anonymousMethod() {
____System.out.println(anonymousField);
__}
});
((Hoge) al.get(0)).anonymousMethod();
普通はList<Hoge>として、下のキャストを要らないようにする分けだが。
__void anonymousMethod();
}
...
List<Object> al = new ArrayList<>();
al.add(new Hoge {
__int anonymousField = 5;
__void anonymousMethod() {
____System.out.println(anonymousField);
__}
});
((Hoge) al.get(0)).anonymousMethod();
普通はList<Hoge>として、下のキャストを要らないようにする分けだが。
28デフォルトの名無しさん (スプッッ Sde2-nFRM [1.75.246.154])
2018/12/07(金) 18:14:33.74ID:8/WIy6eid 他で呼ぶことを目的とするなら匿名クラスにしてはだめでは?
2922 (ワッチョイ 8fb9-aoeu [180.178.88.6])
2018/12/07(金) 18:24:24.58ID:5Mie+W08030デフォルトの名無しさん (アウアウウー Sadb-MnXc [106.132.136.161])
2018/12/07(金) 18:39:34.95ID:qRyaIDL9a31デフォルトの名無しさん (スプッッ Sde2-nFRM [1.75.246.154])
2018/12/07(金) 18:44:34.94ID:8/WIy6eid 渡した先で処理させるのにitemを厳密にしなくてすむ
>>25の例で言うなら自分で作ったcollectionクラスにanonymousMethodをなんか処理する機能をつけてやれば
渡すitemはanonymousMethodを持ってれば匿名でも実体があっても良くなる
>>25の例で言うなら自分で作ったcollectionクラスにanonymousMethodをなんか処理する機能をつけてやれば
渡すitemはanonymousMethodを持ってれば匿名でも実体があっても良くなる
33デフォルトの名無しさん (ワッチョイ 12a6-3Pua [123.48.217.134])
2018/12/13(木) 23:17:41.00ID:kncoc2aJ0 総称型の派生的な定義を一元化したいです。
class ClassA<T1>{}
とあるとき、T2 extends T1とか、T3 extends ClassB<T1>とかを定義したい。
しかしT1の横に並べるとClassAの子クラスにおいて指定する必要が生じます。
ClassA<T1, T2 extends T1> こうしたくない。
ClassAChild extends ClassA<T1Concrete, T2Concrete>みたいにT2Concreteの指定が生じるから。
しかしクラスに定義しないとメソッド毎に総称型の定義が必要になります。
T1だけを指定するという状況を保ったまま、T1に依存した他の派生的な総称型をクラス内で定義したい。
これは可能ですか?
class ClassA<T1>{}
とあるとき、T2 extends T1とか、T3 extends ClassB<T1>とかを定義したい。
しかしT1の横に並べるとClassAの子クラスにおいて指定する必要が生じます。
ClassA<T1, T2 extends T1> こうしたくない。
ClassAChild extends ClassA<T1Concrete, T2Concrete>みたいにT2Concreteの指定が生じるから。
しかしクラスに定義しないとメソッド毎に総称型の定義が必要になります。
T1だけを指定するという状況を保ったまま、T1に依存した他の派生的な総称型をクラス内で定義したい。
これは可能ですか?
34デフォルトの名無しさん (ワッチョイ 36b6-DQC4 [111.90.6.3])
2018/12/13(木) 23:40:07.10ID:Dzj4x6Rs035デフォルトの名無しさん (ワッチョイ 12a6-3Pua [123.48.217.134])
2018/12/13(木) 23:44:58.06ID:kncoc2aJ0 class ClassA<T1>{
public <T2 extends T1> T2 method1();
public <T2 extends T1> T2 method2();
public <T2 extends T1> T2 method3();
}
このようにメソッド毎に総称型を定義するのが嫌なので、クラスのところで指定したいのですが、
そうすると子クラスでT1から自動的に決定するものをわざわざ指定しないといけません。
class ClassA<T1, T2 extends T1>{//子クラスでT2を指定する必要が発生
public T2 method1();
public T2 method2();
public T2 method3();
}
public <T2 extends T1> T2 method1();
public <T2 extends T1> T2 method2();
public <T2 extends T1> T2 method3();
}
このようにメソッド毎に総称型を定義するのが嫌なので、クラスのところで指定したいのですが、
そうすると子クラスでT1から自動的に決定するものをわざわざ指定しないといけません。
class ClassA<T1, T2 extends T1>{//子クラスでT2を指定する必要が発生
public T2 method1();
public T2 method2();
public T2 method3();
}
36デフォルトの名無しさん (ワッチョイ 12a6-3Pua [123.48.217.134])
2018/12/13(木) 23:51:34.03ID:kncoc2aJ0 別の方法で解決できそうです。ありがとうございました
37デフォルトの名無しさん (ワッチョイ 369f-UKyl [175.134.57.7])
2018/12/14(金) 03:07:35.09ID:068kLwWW0 >>36
どんな方法ですか?
どんな方法ですか?
38デフォルトの名無しさん (ワッチョイ a68a-mHCk [121.114.127.30])
2019/01/05(土) 19:38:28.30ID:oWM93k/k0 以下のコードでifの中が実行されない理由がわかりません
条件がtrueなので実行されると思うのですがなんででしょうか
class Sample{
static double total;
int a = 2, b= 3;
public static void main (String[] args){
double x, a, b;
if (total == 0){
a = 3;
b = 4;
x = 0.5;
}
total = x * a * b;
System.out.println(total);
}
}
条件がtrueなので実行されると思うのですがなんででしょうか
class Sample{
static double total;
int a = 2, b= 3;
public static void main (String[] args){
double x, a, b;
if (total == 0){
a = 3;
b = 4;
x = 0.5;
}
total = x * a * b;
System.out.println(total);
}
}
39デフォルトの名無しさん (アウアウエー Sa5a-ahzL [111.239.160.142])
2019/01/05(土) 19:55:28.65ID:tCoREms1a >>38
なぜtrueだと思うのか説明しなさい
なぜtrueだと思うのか説明しなさい
40デフォルトの名無しさん (ワッチョイ a68a-mHCk [121.114.127.30])
2019/01/05(土) 20:09:53.68ID:oWM93k/k0 >>39
System.out.print(total == 0)がtrueだったからです
System.out.print(total == 0)がtrueだったからです
41デフォルトの名無しさん (ワッチョイ 3395-6la0 [210.132.144.78])
2019/01/05(土) 23:15:07.20ID:Mw4M2zcY0 新たにビルドしなおしたものを実行していたつもりがエラーになってて古いやつをずっと実行し続けてた的なやつだな。
とりあえずこれ10回詠唱しとけ
「コンパイラの出力は御経じゃない」
とりあえずこれ10回詠唱しとけ
「コンパイラの出力は御経じゃない」
42デフォルトの名無しさん (ワッチョイ a68a-mHCk [121.114.127.30])
2019/01/06(日) 00:29:12.69ID:+dMvWsVO0 >>41
内容はJavaSE8Silverの問題集に出ていたものです
解説ではif文の中身が実行されないので初期化によるエラーが出るって書いてあり、
そのことは実際にideoneとかで実行し理解してるのですが
なぜtrueにならないのかがわからないということです
内容はJavaSE8Silverの問題集に出ていたものです
解説ではif文の中身が実行されないので初期化によるエラーが出るって書いてあり、
そのことは実際にideoneとかで実行し理解してるのですが
なぜtrueにならないのかがわからないということです
43デフォルトの名無しさん (ワッチョイ 6e01-Dc9L [111.90.9.229])
2019/01/06(日) 00:41:35.13ID:zpMal+Wd044デフォルトの名無しさん (ワッチョイ 6e01-Dc9L [111.90.9.229])
2019/01/06(日) 00:49:02.45ID:zpMal+Wd0 ↓これでもエラーになるんで変数が条件式にあるとダメみたいね、リテラルならおk
public static void main(String[] args) {
boolean a = true;
int b;
if (a) {
b = 2;
}
System.out.println(b);
}
public static void main(String[] args) {
boolean a = true;
int b;
if (a) {
b = 2;
}
System.out.println(b);
}
45デフォルトの名無しさん (ワッチョイ 82d8-tNgF [61.215.127.65])
2019/01/06(日) 00:59:14.50ID:a7U3YVJ70 >>42
そもそもコンパイル通らなくね?
条件が true になるかどうか以前の問題
>解説ではif文の中身が実行されないので初期化によるエラーが出るって書いてあり
これが本当なら説明がおかしいな
if文云々というより単に宣言された x, a, b が初期化されてないからコンパイルエラーになる
if文の中身がtrueになって{}の中が実行されて値が初期化されるかどうかは保証されない
そもそもコンパイル通らなくね?
条件が true になるかどうか以前の問題
>解説ではif文の中身が実行されないので初期化によるエラーが出るって書いてあり
これが本当なら説明がおかしいな
if文云々というより単に宣言された x, a, b が初期化されてないからコンパイルエラーになる
if文の中身がtrueになって{}の中が実行されて値が初期化されるかどうかは保証されない
46デフォルトの名無しさん (ワッチョイ 97b3-nLVr [118.5.12.246])
2019/01/06(日) 01:10:49.61ID:T+vTBvBg0 JavaSilverはコンパイル通らないコードについても出題されるからね
初期化によるエラー云々はコンパイラーが吐くエラーメッセージの事を指していると思われ
初期化によるエラー云々はコンパイラーが吐くエラーメッセージの事を指していると思われ
47デフォルトの名無しさん (ワッチョイ a68a-mHCk [121.114.127.30])
2019/01/06(日) 01:11:57.31ID:+dMvWsVO048デフォルトの名無しさん (ワッチョイ 6e02-xhm2 [175.134.57.7])
2019/01/06(日) 01:55:23.01ID:dAFYlv7A0 コンパイラとしては実行されるまで if の条件が成立するかどうかわからないため、成立する場合と成立しない場合の両方を考慮しているだけではないかな?
で、今回のプログラムの場合は条件が成立しないと初期化されない変数が出てくるためコンパイルエラーになる。
で、今回のプログラムの場合は条件が成立しないと初期化されない変数が出てくるためコンパイルエラーになる。
49デフォルトの名無しさん (ワッチョイ 02b9-ikDe [123.48.137.100])
2019/01/09(水) 16:45:54.79ID:aoiPLBBd0 HDDバースト事件知ってますか?
https://wikiwiki.jp/vipdepso2/09.04%E8%BF%BD%E6%86%B6%E3%81%AEHDD%E3%83%90%E3%83%BC%E3%82%B9%E3%83%88%E4%BA%8B%E4%BB%B6
この手の、ファイル削除系の処理で一歩間違えれば大惨事、というのを防ぐ良い方法はありますか?
https://wikiwiki.jp/vipdepso2/09.04%E8%BF%BD%E6%86%B6%E3%81%AEHDD%E3%83%90%E3%83%BC%E3%82%B9%E3%83%88%E4%BA%8B%E4%BB%B6
この手の、ファイル削除系の処理で一歩間違えれば大惨事、というのを防ぐ良い方法はありますか?
50デフォルトの名無しさん (アウアウウー Saeb-KJeM [106.132.132.107])
2019/01/09(水) 21:22:34.95ID:xuLfg6C4a なんだ物理的にバーストした話じゃないのか
51デフォルトの名無しさん (スップ Sd7f-yTxx [1.66.97.200])
2019/01/10(木) 01:03:37.33ID:V4IVFX9Qd >>49
健常者に開発させる
健常者に開発させる
52デフォルトの名無しさん (アウアウエー Sa9f-7Mna [111.239.166.242])
2019/01/10(木) 13:56:48.41ID:6faDHrU6a 質問です
柴田望洋Javaアルゴリズム本の演習の模範解答に
( (n+1) * (n/2) + (n%2 == 1 ? (n+1)/2 : 0) )
というコードがありました。これを数学っぽく自分が翻訳すると
(1)n/2の余りが1のとき
(n+1)*(n/2) + (n+1)/2
(2)n/2の余りが1でないとき
(n+1)*(n/2) + 0
だと思ったのですが、実際にn=3やn=7を代入して実行してみると(1)と同じ答えになりません。
1からnまでの公差1の等差数列の和ということで手作業で計算してみても実際に(1)はどこかおかしいみたいです。
どなたか(1)の何が変なのか教えてください。
柴田望洋Javaアルゴリズム本の演習の模範解答に
( (n+1) * (n/2) + (n%2 == 1 ? (n+1)/2 : 0) )
というコードがありました。これを数学っぽく自分が翻訳すると
(1)n/2の余りが1のとき
(n+1)*(n/2) + (n+1)/2
(2)n/2の余りが1でないとき
(n+1)*(n/2) + 0
だと思ったのですが、実際にn=3やn=7を代入して実行してみると(1)と同じ答えになりません。
1からnまでの公差1の等差数列の和ということで手作業で計算してみても実際に(1)はどこかおかしいみたいです。
どなたか(1)の何が変なのか教えてください。
53デフォルトの名無しさん (オッペケ Srdb-D+Sj [126.34.1.14])
2019/01/10(木) 15:03:26.18ID:4z6CKeNUr54デフォルトの名無しさん (ブーイモ MM4b-peLi [210.149.251.160])
2019/01/10(木) 20:26:17.36ID:UUY7OixDM >>52
整数同士の割り算は切り捨て
整数同士の割り算は切り捨て
55デフォルトの名無しさん (アウアウエー Sa9f-7Mna [111.239.166.242])
2019/01/11(金) 09:08:48.15ID:e5yPN/cUa >>53-54
ありがとうございます。それで解答だと場合分けしてたんですね
場合分けしたくない場合はdoubleで計算して小数点以下が邪魔に感じられたら計算終えてからintにキャストすればいいんでしょうか。遅くなるのかな
ありがとうございます。それで解答だと場合分けしてたんですね
場合分けしたくない場合はdoubleで計算して小数点以下が邪魔に感じられたら計算終えてからintにキャストすればいいんでしょうか。遅くなるのかな
56デフォルトの名無しさん (ブーイモ MM4b-peLi [210.149.251.94])
2019/01/11(金) 10:10:51.79ID:se94ZxIpM >>55
doubleからintにキャストするときも0.9999は0に切り捨てられてしまうから、Math.roundを使ったほうがいいよ。
計算途中で絶対に小数にならない保証があるなら、おそらく52bitまでならそのままdoubleを整数にキャストできるけども
doubleからintにキャストするときも0.9999は0に切り捨てられてしまうから、Math.roundを使ったほうがいいよ。
計算途中で絶対に小数にならない保証があるなら、おそらく52bitまでならそのままdoubleを整数にキャストできるけども
57デフォルトの名無しさん (アウアウエー Sa9f-7Mna [111.239.166.210])
2019/01/13(日) 01:54:50.84ID:Byt7I9dTa >>56
なるほどなるほど。ありがとうございます。
なるほどなるほど。ありがとうございます。
58デフォルトの名無しさん (ワッチョイ a3a3-A3MQ [115.176.105.72])
2019/02/12(火) 23:11:33.01ID:VqanzRzk0 syncronizedMapとConcurrentHashMapってConcurrentHashMapの方がいいのかな
59デフォルトの名無しさん (ワッチョイ 3db3-tGKk [118.5.12.246])
2019/02/12(火) 23:46:42.62ID:eVAdyGJj0 せやな
60デフォルトの名無しさん (アウアウウー Sa29-EZDe [106.181.159.54])
2019/02/14(木) 21:29:20.64ID:0iIJdx51a マルチプラットフォームなデスクトップアプリを作るのにJavaを愛用していましたがJavaFXはオプションになるしそもそもJDK/JREもいつまで使えるかわからないので乗換先の言語を探しています。
- GUIアプリを標準で作れる
- マルチプラットフォーム
- できればコンパイラ言語
- 学習コストが低い
でおすすめは何でしょうか?
ご教示方よろしくお願いいたします。
- GUIアプリを標準で作れる
- マルチプラットフォーム
- できればコンパイラ言語
- 学習コストが低い
でおすすめは何でしょうか?
ご教示方よろしくお願いいたします。
61デフォルトの名無しさん (ワッチョイ 23ad-kWus [27.139.3.34])
2019/02/15(金) 04:13:32.67ID:aMcTHSTs0 JavaからならC#だけど
どこまでやるかだな
Macを入れるか入れないかとか
何系作ってるの?
どこまでやるかだな
Macを入れるか入れないかとか
何系作ってるの?
62デフォルトの名無しさん (ワッチョイ 6d5f-UXAq [106.72.167.0])
2019/02/15(金) 06:17:17.01ID:yAjWMCK+0 c#だとGUIのコード共通化厳しいのでは。
Win+Macなら今さらだけどAdobeAirとか。証券会社のアプリとかで生き残っている。
LinuxもGUI共通化必要なら、現実的なのはjavaくらいしか知らない。
Win+Macなら今さらだけどAdobeAirとか。証券会社のアプリとかで生き残っている。
LinuxもGUI共通化必要なら、現実的なのはjavaくらいしか知らない。
63デフォルトの名無しさん (アウアウクー MMc1-oGo3 [36.11.224.96])
2019/02/15(金) 21:23:54.83ID:FjaN5554M 条件がGUI共通化だけならElectronとかWeb系かな
PWAはどうなってるか知らんけどその内流行るんだろう
PWAはどうなってるか知らんけどその内流行るんだろう
64デフォルトの名無しさん (ワッチョイ 13b9-2CcH [123.48.137.100])
2019/02/21(木) 12:06:27.49ID:LculVqLN0 これがb=aのとこでコンパイルエラーになる理由は何ですか?
AはTestIを継承したもの、TestClassはTestIを実装している。
総称型の限定において継承と実装は区別されてるんですか?
public static interface TestI {}
public static class TestClass implements TestI {}
private <A extends TestI> void f(TestClass a) {
A b = a;
}
AはTestIを継承したもの、TestClassはTestIを実装している。
総称型の限定において継承と実装は区別されてるんですか?
public static interface TestI {}
public static class TestClass implements TestI {}
private <A extends TestI> void f(TestClass a) {
A b = a;
}
65デフォルトの名無しさん (ワッチョイ fb01-YmSR [111.90.27.175])
2019/02/21(木) 19:48:36.10ID:fprmeCB00 >>64
TestI <- A
TestI <- TestClass
でTestClassをAに変換できないって出てるんでしょ
AはTestIを実装する任意のクラスだから
TestClassから変換できないのは当然のような
TestI <- A
TestI <- TestClass
でTestClassをAに変換できないって出てるんでしょ
AはTestIを実装する任意のクラスだから
TestClassから変換できないのは当然のような
66デフォルトの名無しさん (ワッチョイ 13b9-2CcH [123.48.137.100])
2019/02/21(木) 20:51:00.87ID:LculVqLN0 あーそうか
わかりました。ありがとう
わかりました。ありがとう
67デフォルトの名無しさん (ワッチョイ 13b9-2CcH [123.48.137.100])
2019/02/27(水) 04:09:48.78ID:ZxiXIgw80 interfaceでthisの型をメソッドの引数に使う方法はありますか?総称型を使わずに
これができないとequals的な自クラスの他オブジェクトを受け取るタイプのインターフェースのために
総称型を指定しなきゃいけないので面倒です
public interface TestI{
void method(ThisClass o);
}
これができないとequals的な自クラスの他オブジェクトを受け取るタイプのインターフェースのために
総称型を指定しなきゃいけないので面倒です
public interface TestI{
void method(ThisClass o);
}
68デフォルトの名無しさん (ワッチョイ 53ec-kAzg [115.176.136.8])
2019/02/27(水) 07:02:08.01ID:R7mDgiP40 面倒も何もそれが総称型の意義です
要はComparableみたいなもんでしょ
要はComparableみたいなもんでしょ
69デフォルトの名無しさん (ワッチョイ 5161-cnIv [218.231.167.235])
2019/02/27(水) 08:45:57.23ID:Gr4hh2OI0 public interface TestI<T extends ThisClass >{
void method(T o);
}
void method(T o);
}
70デフォルトの名無しさん (ワッチョイ 5161-cnIv [218.231.167.235])
2019/02/27(水) 08:51:23.70ID:Gr4hh2OI0 別に面倒でも何でもないよ。
methodの引数でThisClassの子クラスを受け取ったとしても、
intanceofとかする必要は全くない。
methodの引数でThisClassの子クラスを受け取ったとしても、
intanceofとかする必要は全くない。
71デフォルトの名無しさん (ブーイモ MM8d-vZil [210.149.251.14])
2019/02/27(水) 12:39:12.56ID:0d3JNljSM void method(Testl t)じゃあかんの?
72デフォルトの名無しさん (アウアウカー Sa55-kAzg [182.251.192.96])
2019/02/27(水) 12:57:07.94ID:avwBchUKa >>71
それ毎回キャストが要るやん
それ毎回キャストが要るやん
73デフォルトの名無しさん (ワッチョイ 13b9-4qoz [123.48.137.100])
2019/02/27(水) 14:30:01.32ID:ZxiXIgw80 でも"thisの型"をデフォルトで使えても良いと思いませんか?
オブジェクトが使用される時常に明らかになっているはずです。
つまり記述を省略できても良い
オブジェクトが使用される時常に明らかになっているはずです。
つまり記述を省略できても良い
74デフォルトの名無しさん (ワッチョイ 5161-cnIv [218.231.167.235])
2019/02/27(水) 15:19:00.05ID:Gr4hh2OI0 equals()については、互換性維持。
できないものはできない。
自分で定義するものについては、ジェネリクス使えばよい。
できないものはできない。
自分で定義するものについては、ジェネリクス使えばよい。
75デフォルトの名無しさん (ワッチョイ 13b9-4qoz [123.48.137.100])
2019/02/27(水) 16:09:27.46ID:ZxiXIgw80 public interface TestI<T extends TestI>{
void method(T o);
}
こう書くと警告でます。extends TestIのところで
TestI<?>と書くんですか?
void method(T o);
}
こう書くと警告でます。extends TestIのところで
TestI<?>と書くんですか?
76デフォルトの名無しさん (アウアウカー Sa55-kAzg [182.251.192.96])
2019/02/27(水) 17:50:52.58ID:avwBchUKa 待って、それを知らずに面倒とか言ってたの
Testl<T>でいいんだよ……
Testl<T>でいいんだよ……
77デフォルトの名無しさん (ワッチョイ 13b9-4qoz [123.48.137.100])
2019/02/27(水) 18:38:23.32ID:ZxiXIgw80 それでも出来るのは最初から分かってるんですが、
意味的にTestIを実装したものしかそこに書かないでしょう?
だからその前提を記述しておきたいという話です。
意味的にTestIを実装したものしかそこに書かないでしょう?
だからその前提を記述しておきたいという話です。
78デフォルトの名無しさん (ワッチョイ 13b9-4qoz [123.48.137.100])
2019/02/27(水) 18:40:40.28ID:ZxiXIgw80 あと面倒と言ってるのはそのインターフェースを実装しているクラス、
さらにそのクラスを継承したクラス、さらにそれを継承したクラスと
記述箇所が一斉に増えるからです。
抽象クラスが実装しているインターフェースにこういう要件が発生すると実際かなり面倒であることは想像できるはずです。
さらにそのクラスを継承したクラス、さらにそれを継承したクラスと
記述箇所が一斉に増えるからです。
抽象クラスが実装しているインターフェースにこういう要件が発生すると実際かなり面倒であることは想像できるはずです。
79デフォルトの名無しさん (ワッチョイ 13b9-4qoz [123.48.137.100])
2019/02/27(水) 18:43:33.03ID:ZxiXIgw80 public abstract class AbClass<T extends AbClass> implements TestI<T>{
}
public abstract class AbClass2<T extends AbClass2> extends AbClass<T>{}
このように次々と続いていくことになります。
そしてこれらすべてで警告が出ます。
}
public abstract class AbClass2<T extends AbClass2> extends AbClass<T>{}
このように次々と続いていくことになります。
そしてこれらすべてで警告が出ます。
80デフォルトの名無しさん (ワッチョイ 13b9-4qoz [123.48.137.100])
2019/02/27(水) 18:51:04.99ID:ZxiXIgw80 上にもありましたがComparable的なインターフェースという事になりますが
このようなインターフェースを継承ツリーの上の方で実装すると問題になります。
通常のインターフェースや、通常の総称型インターフェースでは問題無いんですが、
このようなインターフェースはたびたび継承ツリーの各クラスでそのクラスについての実装を記述する事になります。
だから、thisの型が予約語として扱えると非常に便利だろうと。
このようなインターフェースを継承ツリーの上の方で実装すると問題になります。
通常のインターフェースや、通常の総称型インターフェースでは問題無いんですが、
このようなインターフェースはたびたび継承ツリーの各クラスでそのクラスについての実装を記述する事になります。
だから、thisの型が予約語として扱えると非常に便利だろうと。
81デフォルトの名無しさん (ワッチョイ d9d2-4qoz [220.111.235.184])
2019/02/27(水) 19:46:32.65ID:K3ri/4ZM0 再帰ジェネリクスの話ししてる?
違ったらごめん
interface TestI<T extends TestI<T>>{
T method(T o);
}
abstract class AbClass<T extends AbClass<T>> implements TestI<T>{ }
abstract class AbClass2<T extends AbClass2<T>> extends AbClass<T>{}
abstract class AbClass3<T extends AbClass3<T>> extends AbClass2<T>{}
違ったらごめん
interface TestI<T extends TestI<T>>{
T method(T o);
}
abstract class AbClass<T extends AbClass<T>> implements TestI<T>{ }
abstract class AbClass2<T extends AbClass2<T>> extends AbClass<T>{}
abstract class AbClass3<T extends AbClass3<T>> extends AbClass2<T>{}
8275 (ワッチョイ 13b9-4qoz [123.48.137.100])
2019/02/27(水) 21:45:06.35ID:ZxiXIgw80 >>81
できました。
できました。
83デフォルトの名無しさん (ワッチョイ d9d2-kAzg [220.111.235.184])
2019/02/27(水) 23:40:06.72ID:K3ri/4ZM0 >>82
良かったです
良かったです
84デフォルトの名無しさん (ワッチョイ 2361-CeLW [61.245.58.39])
2019/02/28(木) 08:07:59.94ID:RsBX7ota0 AbClass<T extends AbClass<T>>
こういうのってどういうのを想定してるの?
シングルトンではないenumみたいなもの?
こういうのってどういうのを想定してるの?
シングルトンではないenumみたいなもの?
85デフォルトの名無しさん (ワッチョイ 23b9-SKB1 [123.48.137.100])
2019/02/28(木) 17:19:13.77ID:X2FmV3yG0 継承ツリーの各クラスでTが連鎖的に定義されるような状況があるとき
extends AbClass1<T>の意味は、末端の具象クラスで総称型に指定されたTが
一番上の抽象クラスまで連鎖的に指定されている事を要求しているような意味がある。
extends AbClass1<T>の意味は、末端の具象クラスで総称型に指定されたTが
一番上の抽象クラスまで連鎖的に指定されている事を要求しているような意味がある。
86デフォルトの名無しさん (ワッチョイ 23b9-SKB1 [123.48.137.100])
2019/02/28(木) 17:23:29.93ID:X2FmV3yG0 AbClass<T extends AbClass<T>>これの
extends AbClass<T>この部分の意味は、って話
extends AbClass<T>この部分の意味は、って話
87デフォルトの名無しさん (アウアウカー Sa91-6Vjj [182.251.141.226])
2019/03/01(金) 23:04:20.59ID:KZb5YrRoa >>84
抽象クラスで定義したメソッドで自分の未知のサブクラス返すときとか
抽象クラスで定義したメソッドで自分の未知のサブクラス返すときとか
88デフォルトの名無しさん (ワッチョイ aded-Hr0W [122.135.18.167])
2019/03/04(月) 16:25:49.04ID:v/u/gYja0 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11204388166?fr=ios_other
Javaプログラム(MIDI)TransmitterとReceiverと標準Synthesizer
下記のプログラムで音がなります
Sequencer sequencer = MidiSystem.getSequencer();
File myMidiFile = new File("d:/tw008.m
id");
Sequence mySeq = MidiSystem.getSequence(myMidiFile);
sequencer.setSequence(mySeq);
sequencer.open();
System.out.println("start");
sequencer.start();
Thread.sleep(60000);
ところが、SynthesizerをCloseしても、Receiverを指定しても、
標準のMIDI音源がなりつづけています。この音をけして、
自作アプリのルーチンだけにMIDIを流す手法をご存知の方いらっしゃいますか?
Windows10+JDK1.8を使用しています。
Javaプログラム(MIDI)TransmitterとReceiverと標準Synthesizer
下記のプログラムで音がなります
Sequencer sequencer = MidiSystem.getSequencer();
File myMidiFile = new File("d:/tw008.m
id");
Sequence mySeq = MidiSystem.getSequence(myMidiFile);
sequencer.setSequence(mySeq);
sequencer.open();
System.out.println("start");
sequencer.start();
Thread.sleep(60000);
ところが、SynthesizerをCloseしても、Receiverを指定しても、
標準のMIDI音源がなりつづけています。この音をけして、
自作アプリのルーチンだけにMIDIを流す手法をご存知の方いらっしゃいますか?
Windows10+JDK1.8を使用しています。
89デフォルトの名無しさん (ワッチョイ aded-Hr0W [122.135.18.167])
2019/03/04(月) 19:33:49.60ID:v/u/gYja0 解決しました
90デフォルトの名無しさん (ワッチョイ e3a3-+f+8 [115.176.105.72])
2019/03/04(月) 21:04:50.65ID:/O719wMt0 解決した方法ぐらい書けよクソが
91デフォルトの名無しさん (ワッチョイ aded-Hr0W [122.135.18.167])
2019/03/04(月) 21:09:40.54ID:v/u/gYja0 getSequencer(true)
または
getSequencer(false)
で
オブジェクト思考じゃないシンセサイザーが
くっつくかどうか決まる
https://osdn.net/projects/midicrossport/howto/usage
の
https://osdn.net/projects/midicrossport/scm/svn/blobs/head/V-0.2%20AddPlayer/src/net/sourceforge/midicrossport/swing/MXPortMIDIPlayer.java
で早速使いました
または
getSequencer(false)
で
オブジェクト思考じゃないシンセサイザーが
くっつくかどうか決まる
https://osdn.net/projects/midicrossport/howto/usage
の
https://osdn.net/projects/midicrossport/scm/svn/blobs/head/V-0.2%20AddPlayer/src/net/sourceforge/midicrossport/swing/MXPortMIDIPlayer.java
で早速使いました
92デフォルトの名無しさん (ワッチョイ aded-Hr0W [122.135.18.167])
2019/03/04(月) 22:05:35.70ID:v/u/gYja0 javaは隠してるメソッド多いよね
今回のは過去のソースの動作などの
整合性のためだと思うけどさ
肝に銘じて作りこんでいきます
4時間悩んでjavadocみたら5秒で解決したわ
今回のは過去のソースの動作などの
整合性のためだと思うけどさ
肝に銘じて作りこんでいきます
4時間悩んでjavadocみたら5秒で解決したわ
93デフォルトの名無しさん (アウアウクー MM21-tQZn [36.11.225.62 [上級国民]])
2019/03/05(火) 20:19:30.79ID:EdVc4MwEM >>92
そういうのは非推奨になってないか?
そういうのは非推奨になってないか?
94fusianasan (ワッチョイ e3a3-+f+8 [115.176.105.72])
2019/03/06(水) 02:05:18.33ID:n2VNtnMC0 交差型キャストの使い道、ある?
95デフォルトの名無しさん (ワッチョイ e3a3-+f+8 [115.176.105.72])
2019/03/06(水) 02:12:58.66ID:n2VNtnMC0 ついでにListの要素をEnumしか取れなくしたEnumListみたいなのある?(ググり済み)
96デフォルトの名無しさん (ブーイモ MM43-VPTz [49.239.68.122])
2019/03/06(水) 12:33:32.69ID:twdiy1n8M >>95
List<Enum>じゃあかんのか?
List<Enum>じゃあかんのか?
97デフォルトの名無しさん (ワッチョイ e3a3-+f+8 [115.176.105.72])
2019/03/06(水) 14:46:27.86ID:n2VNtnMC0 >>96
EnumSetとかEnumMapみたいな省メモリな実装があったらいいなーと思って
EnumSetとかEnumMapみたいな省メモリな実装があったらいいなーと思って
98デフォルトの名無しさん (ブーイモ MM43-VPTz [49.239.68.122])
2019/03/06(水) 18:26:17.49ID:twdiy1n8M >>97
ないよ♪
ないよ♪
99デフォルトの名無しさん (アウアウカー Sa91-cbQp [182.251.184.155])
2019/03/06(水) 18:31:31.19ID:izEJjivba 重複がないからこそ連番の配列として扱えてるのに、重複が許されるリストじゃやりようがない
100デフォルトの名無しさん (ワッチョイ ab5f-BAw6 [106.72.150.32])
2019/03/07(木) 12:03:41.01ID:gGJGAOob0 べき乗の計算式を作りたいのですがうまくいきません
(例)
a=5;
a=a^2;
上記の例のようにしても、結果が25になりません
Javaではべき乗計算はサポートしていないのでしょうか?
(例)
a=5;
a=a^2;
上記の例のようにしても、結果が25になりません
Javaではべき乗計算はサポートしていないのでしょうか?
101デフォルトの名無しさん (ワッチョイ 8790-0yyx [182.21.48.176])
2019/03/07(木) 12:36:39.64ID:p9KSjCQy0 ワロタ。演算子じゃなくてそういうメソッドがあるはず。Mathクラスのメソッド調べてみん
102デフォルトの名無しさん (アウアウウー Sa1b-hLQV [106.132.137.60])
2019/03/07(木) 12:47:48.74ID:NXRNz+RGa103デフォルトの名無しさん (ワッチョイ ab5f-LDqw [106.72.163.96 [上級国民]])
2019/03/07(木) 12:56:15.23ID:fEnrnvq10 >>100
VB系?なんで他の言語と同じだと思うのか?
VB系?なんで他の言語と同じだと思うのか?
104デフォルトの名無しさん (ワッチョイ dfe9-/kwh [222.15.235.177])
2019/03/07(木) 17:27:05.50ID:GsPaI+yW0 XORは大昔自前のカーソルを作った時に使った記憶がある。
覚えている限りその後1度も使ってない。
覚えている限りその後1度も使ってない。
105デフォルトの名無しさん (ブーイモ MMfe-fVIY [163.49.205.152])
2019/03/07(木) 17:42:58.27ID:5OHvHrCkM106デフォルトの名無しさん (ワッチョイ 4eda-ouaW [223.218.132.71])
2019/03/07(木) 20:29:39.29ID:wbxrkc+00 VBは変態
107デフォルトの名無しさん (アウアウウー Sa1b-hLQV [106.132.137.60])
2019/03/07(木) 20:37:45.84ID:NXRNz+RGa よくぞ私が変態であることを見破った。
君も仲間にしてあげよう。
君も仲間にしてあげよう。
108デフォルトの名無しさん (ワッチョイ 4eda-ouaW [223.218.132.71])
2019/03/07(木) 20:58:32.73ID:wbxrkc+00 俺は満月の夜に変態する
109デフォルトの名無しさん (ワッチョイ ab5f-LDqw [106.72.163.96 [上級国民]])
2019/03/07(木) 23:01:15.30ID:fEnrnvq10 >>105
同じじゃないよ。
同じじゃないよ。
110デフォルトの名無しさん (アウアウカー Sa27-F7Qp [182.251.183.244])
2019/03/07(木) 23:02:42.20ID:oTfLqBj1a Scala「演算子ってなんだっけ」
111デフォルトの名無しさん (ワッチョイ ce01-WpCY [111.90.4.72])
2019/03/08(金) 06:06:53.29ID:hih03Kc60 >>109
同じだとは言ってない
同じだとは言ってない
112デフォルトの名無しさん (アウアウカー Sa27-C/vZ [182.251.233.135])
2019/03/09(土) 17:58:45.34ID:IPK2i5wVa 二項^は言語によって意味が違う筆頭だから。
>>94
交差型へのキャストそのものが目的でないならラムダ式をSerializableやCloneableにするためかな。
(Lambda & Serializable)や(Lambda & Cloneable)でキャストするとコンパイラがSerializableやCloneableを導出する。
>>94
交差型へのキャストそのものが目的でないならラムダ式をSerializableやCloneableにするためかな。
(Lambda & Serializable)や(Lambda & Cloneable)でキャストするとコンパイラがSerializableやCloneableを導出する。
113デフォルトの名無しさん (ワッチョイ 82a3-QfcG [115.176.105.72])
2019/03/11(月) 23:15:46.61ID:+cXkYAGY0114デフォルトの名無しさん (スップ Sd5f-nIdv [49.97.105.39])
2019/03/15(金) 10:24:40.99ID:Ok3y758Id servletの質問です
httpServletを継承したクラスで、web.xmlに記載されたコンテキストの初期化パラメータにアクセスしたいとき、まずServletContextオブジェクトを取得すると思います。
this.getServletContext()
と
getServletConfig().getServletContext()
その方法として上記2つがあるようですが、
ServletConfigオブジェクトを経由するかしないかの違いだけで、
どちらでも同じオブジェクトを得られると考えて大丈夫でしょうか?
また、どちらの方法が推奨される、または一般的などありますか?
httpServletを継承したクラスで、web.xmlに記載されたコンテキストの初期化パラメータにアクセスしたいとき、まずServletContextオブジェクトを取得すると思います。
this.getServletContext()
と
getServletConfig().getServletContext()
その方法として上記2つがあるようですが、
ServletConfigオブジェクトを経由するかしないかの違いだけで、
どちらでも同じオブジェクトを得られると考えて大丈夫でしょうか?
また、どちらの方法が推奨される、または一般的などありますか?
115デフォルトの名無しさん (ワッチョイ 2361-YxN5 [218.231.194.55])
2019/03/15(金) 15:28:02.60ID:oN7LPR9/0 上は下のショートカット。
のはずなんだけど、どの実装だったか忘れた(tomcatかjetty)けど、上だとnullを返すものがあったりする。
のはずなんだけど、どの実装だったか忘れた(tomcatかjetty)けど、上だとnullを返すものがあったりする。
116デフォルトの名無しさん (ワッチョイ efda-h1+v [223.218.107.217])
2019/03/15(金) 16:26:03.07ID:qau92T4C0 作ったプログラムがきちんと動作しそうもない初心者の匂い
117デフォルトの名無しさん (ワッチョイ 3fb9-geq4 [123.48.137.100])
2019/03/17(日) 20:07:31.39ID:WG0MhxwJ0 順序を保証しないコンテナ系オブジェクトは同じ順番で同じ値を入力したとして
シリアライズした時のバイナリの一致を保証しますか?
@Test
public void serializeTest() {
Map<Integer, byte[]> m1 = new HashMap<>();
Map<Integer, byte[]> m2 = new HashMap<>();
Random rnd = new Random();
try {
for (int j = 0; j < 1000; j++) {
m1.clear();
m2.clear();
for (int i = 0; i < 1000; i++) {
byte[] v = new byte[32];
rnd.nextBytes(v);
m1.put(i, v);
m2.put(i, v);
}
byte[] b1 = serialize(m1);
byte[] b2 = serialize(m2);
if (!Arrays.equals(b1, b2)) {//b1,b2の同値性が保証されるか?
System.out.println("false");
}
}
} catch (Exception e) {
}
}
シリアライズした時のバイナリの一致を保証しますか?
@Test
public void serializeTest() {
Map<Integer, byte[]> m1 = new HashMap<>();
Map<Integer, byte[]> m2 = new HashMap<>();
Random rnd = new Random();
try {
for (int j = 0; j < 1000; j++) {
m1.clear();
m2.clear();
for (int i = 0; i < 1000; i++) {
byte[] v = new byte[32];
rnd.nextBytes(v);
m1.put(i, v);
m2.put(i, v);
}
byte[] b1 = serialize(m1);
byte[] b2 = serialize(m2);
if (!Arrays.equals(b1, b2)) {//b1,b2の同値性が保証されるか?
System.out.println("false");
}
}
} catch (Exception e) {
}
}
118デフォルトの名無しさん (ワッチョイ 3fb9-geq4 [123.48.137.100])
2019/03/17(日) 20:09:43.63ID:WG0MhxwJ0 private byte[] serialize(Object o) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(o);
out.flush();
return bos.toByteArray();
} catch (Exception e) {
return null;
} finally {
try {
bos.close();
} catch (IOException ex) {
}
}
}
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(o);
out.flush();
return bos.toByteArray();
} catch (Exception e) {
return null;
} finally {
try {
bos.close();
} catch (IOException ex) {
}
}
}
119デフォルトの名無しさん (ワッチョイ 3fb9-geq4 [123.48.137.100])
2019/03/17(日) 20:11:36.70ID:WG0MhxwJ0 実行時のメモリ状況とかなんかそういうものに依存して変わってしまうのかどうか。
HashMapでなくConcurrentHashMapはどうか、HashSetはどうかとか、知りたいです。
HashMapでなくConcurrentHashMapはどうか、HashSetはどうかとか、知りたいです。
120デフォルトの名無しさん (ワッチョイ bfa3-vdqk [115.176.105.72])
2019/03/18(月) 18:40:58.81ID:dcUw/hqV0 自分で確かめてみればいいのに(΄◉◞౪◟◉`)
予想としてはちゃんと復元できると思うけど
予想としてはちゃんと復元できると思うけど
121デフォルトの名無しさん (ブーイモ MM5f-7Wyv [49.239.66.129])
2019/03/18(月) 18:46:45.54ID:YtFzpwnZM たまたま同じになるのか
必ずそうなるのか確証が欲しいのでござろうよ
必ずそうなるのか確証が欲しいのでござろうよ
122デフォルトの名無しさん (ワッチョイ 3fb9-geq4 [123.48.137.100])
2019/03/18(月) 18:50:01.07ID:cWWfW/xk0 復元できるか、じゃなくて
どんな実行時状態でシリアライズしてもバイナリレベルで同値になるか、が知りたい
どんな実行時状態でシリアライズしてもバイナリレベルで同値になるか、が知りたい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
