★★Java質問・相談スレッド181★★

1デフォルトの名無しさん2018/02/10(土) 17:49:40.56ID:l9ZzjyKP
プログラミング言語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質問・相談スレッド180★★
https://mevius.5ch.net/test/read.cgi/tech/1492780397/

747デフォルトの名無しさん2018/08/31(金) 10:43:19.14ID:s5ujzdS3
なんというか、Windowsならftpアプリなんかわざわざ作らんでもWebブラウザやエクスプローラでURL指定して開いちゃえばいいような気がするが・・・

あ、とにかく作ってみたいのか。

748デフォルトの名無しさん2018/08/31(金) 20:47:37.72ID:jQ6ZKbRR
>>747
ピュアな ftp ならプロトコルも対して難しくもないからネットワークの練習にはちょうどいい

749デフォルトの名無しさん2018/09/01(土) 00:04:26.42ID:kDvfeVra
gluonとopenjfxが両方javafx11ビルドしてるけどこれ同じバイナリだろうか?

750デフォルトの名無しさん2018/09/01(土) 10:46:03.05ID:faUndSgH
>>5
8のreplaceは正規表現を使ってて馬鹿みたいに遅いから気をつけろ

751デフォルトの名無しさん2018/09/01(土) 10:50:10.09ID:8XWt4TWp
>>749
JavaFXはもうJavaの一部ではないのでこのスレのスコープ外だよ
専用スレか公式フォーラムで聞きなさい

752デフォルトの名無しさん2018/09/01(土) 11:18:35.81ID:4jvmXnIZ
>>750
それはreplaceFirst()だろ

753デフォルトの名無しさん2018/09/01(土) 13:34:55.66ID:tt1XTLVx
調べてみた

@since 1.5
replace(CharSequence target, CharSequence replacement)

@since 1.4
replaceAll(String regex, String replacement)

@since 1.4
replaceFirst(String regex, String replacement)

replaceは正規表現使ってなかった

754デフォルトの名無しさん2018/09/01(土) 22:52:18.30ID:6Yw3sf7c
>>751
元からjavaの一部じゃないから

755デフォルトの名無しさん2018/09/21(金) 23:35:33.58ID:6Tz3djX7
資格に関する質問ってしてもOK?
Oracleの「Java SE 8 Silver」の試験勉強をしようと思うんだけど、参考書に迷ってる
4月からjavaを学習してる程度の人が「徹底攻略 Java SE 8 Silver 問題集」をやるのは難易度高い?

書いてて宣伝っぽい文章になったのはごめん

756デフォルトの名無しさん2018/09/22(土) 07:41:38.75ID:r0UgUCyq
NG

757デフォルトの名無しさん2018/09/27(木) 05:16:42.90ID:lxTijohv
java SE 11 キテター

758デフォルトの名無しさん2018/09/27(木) 09:12:53.75ID:rZRe7wqK
有料だから注意しろよ
無料で落とせるやつはちゃんとLAに「評価と開発以外の目的に使うな」と書かれてる
そんな大事なことをダウンロードページに明記してなくてLA読まないと分からないようにしてるのは流石天下のオラクル様ですわ

759デフォルトの名無しさん2018/09/27(木) 23:41:43.99ID:vISpszsR
OpenJDK11があるじゃん。そのうちAdapt OpenJDK11もでるだろ。

760デフォルトの名無しさん2018/09/28(金) 11:03:15.31ID:2WodH1m0
JDK11が多すぎて混乱しそう

761デフォルトの名無しさん2018/09/29(土) 00:56:04.15ID:kyybLiyB
だいたいダウンロードページにOTN開発者ライセンスに変わったって書いてあるし

762デフォルトの名無しさん2018/09/29(土) 18:23:46.96ID:o+PWeM92
JavaでJson読ませるの、どのライブラリが使い勝手いい?
なんかいろいろありすぎて困る

763デフォルトの名無しさん2018/09/29(土) 22:43:49.26ID:tgpIib8y
>>762
JSR 374がjaxpに似せてるから学習コスト低いよ。
ttps://javaee.github.io/jsonp/

764デフォルトの名無しさん2018/10/03(水) 01:25:23.37ID:9ie+5iaR
質問です。
下記のコードで、
https://ideone.com/0RbRo7
出力が0と0の間で2行開いてしまっているのですが、これはなぜでしょうか?
System.out.printlnをSystem.out.printにすると空白は出ないのですが…。

765デフォルトの名無しさん2018/10/03(水) 01:59:25.15ID:VtwiWIya
区切り文字を{},の3文字にしてsplitしたからでしょ。

766デフォルトの名無しさん2018/10/03(水) 07:18:02.71ID:3B507mk5
>>764
空文字列が入ってるから、フィルタするなりで
https://paiza.io/projects/6hDp8xbY-QC0oLgrDBj0Sw?language=java

767デフォルトの名無しさん2018/10/03(水) 20:33:31.74ID:Yoi2jO2M
正規表現か書式を見直したほうがいいんじゃないの?

7687642018/10/04(木) 00:11:26.33ID:smFA2GkF
>>765
>>766
>>767
返信ありがとうございました。
また質問させて頂くかもしれませんが、よろしければその時もまたお願いします。

769デフォルトの名無しさん2018/10/04(木) 11:58:36.08ID:YAdWzVOj
http://acro-engineer.hatenablog.com/entry/2013/10/17/113216
>MyProtocolClientHandler extends ChannelInboundHandlerAdapter

Inbound 受信時に使用される処理
Outbound 送信時に使用される処理
という理解なんだけど、クライアント側のInboundはレスポンスを受信するときに動くということ?
でも送信時のコードが書かれてるようで、分からない。
NettyのInbound, Outboundとは?

770デフォルトの名無しさん2018/10/04(木) 13:51:17.62ID:k+Ofe9B1
Inbound:中国人の観光客
Outbound:日本人の海外旅行

771デフォルトの名無しさん2018/10/04(木) 14:09:27.89ID:YAdWzVOj
ああわかりました
channelActiveは返信等を受け付けれるような状態になった時に呼び出されて、
それはinbound,outbound関係無いってことですね
パイプラインのハンドラーというより、メッセージ送信の
コントローラー的なものがそこに書かれてるということですね
たまたまハンドラのイベントにそういう処理が書かれてる

772デフォルトの名無しさん2018/10/06(土) 11:51:41.21ID:mwcXVcDx
https://netty.io/4.0/api/io/netty/channel/ChannelDuplexHandler.html
> intercept operations and also state updates

この部分どういう意味ですか?intercept operationとは?

DuplexHandlerはパイプライン上でどういう順序で実行されますか?
受信時と送信時で実行して欲しい順番が異なる場合どうすれば?

773デフォルトの名無しさん2018/10/06(土) 19:22:07.94ID:3cjxIhmP
Java SE API & ドキュメント
https://www.oracle.com/technetwork/jp/java/javase/documentation/api-jsp-316041-ja.html


Java11の日本語ドキュメントはいつごろ出てくるのでしょうか?

774デフォルトの名無しさん2018/10/08(月) 07:44:21.00ID:fU+WK0rO
bronzeの問題集やっててイライラしてきたんだけど、問題になるようなコードは基本的に書くなってことでいいんですよね?
&&||の右側にインクリメント演算子書いたから場合によって評価されないとかif文の中身1行しかないからカッコ省略したら読みづらくなってるとか
問題として出されるくらいヒューマンエラーを産みかねないってことでOK?

775デフォルトの名無しさん2018/10/08(月) 08:33:34.55ID:QRotEnod
読めるようになれってことじゃないの?
>&&||の右側にインクリメント演算子書いたから場合によって評価されない
例えばこれは、
if(a != null && a.get()>1)
こんな行があった時に2つ目の演算でNPE起きない事が保証されると分かれ、ということだろう
書くな、じゃないよ。こんなコードたくさんあるし、こう書かないと冗長になる

776デフォルトの名無しさん2018/10/08(月) 08:56:01.75ID:fU+WK0rO
>>775
演算子のほうはちゃんと意味考えて書けよってことですよね?って聞いたつもりだったんです、言葉足らずでした
評価されない場合使って簡潔に書くのはよくあることなんですかね

中身1文ブロックのカッコ省略のメリットがさっぱりわからないんですが見た目がすっきりするだけですかね……?
どこ読んでもあえて推奨されてることがなくて、ブログのコメント欄とかはだいたいケンカになってるんでこれはあまり触れてはいけないアレなんでしょうか

777デフォルトの名無しさん2018/10/08(月) 08:58:46.13ID:QRotEnod
まあそれは簡単に言うと
開発時のソースコードはデバッグ出力の行があったりするんだけど
リリース時はデバッグ出力の行を文字列置換で一掃したりする。で、もし
if(...)
debugLog(...);

こういう行があったとして、debugLog(...);を置換で削除したら、エラーになる。
if(...){
debugLog(...);
}
これは置換しても大丈夫。

だから、括弧無しは処理部分を置換する事があるか、による
経験上置換するのはデバッグ系コードだけ

778デフォルトの名無しさん2018/10/08(月) 09:13:02.08ID:fU+WK0rO
書き換えるつもりがない1行のはカッコ省略で書くと読みやすい、あとあと置換するdebugLog(…)とかは消したときに空のブロックになるように{}書いとく、ってことでしょうか?

779デフォルトの名無しさん2018/10/08(月) 09:51:13.29ID:UTHfaM17
>>777
嘘をついてはいけない
デバッグ出力を置換で消す場合は ";" に置き換えれば良いので
{} の有無など関係ない

780デフォルトの名無しさん2018/10/08(月) 09:55:23.16ID:QRotEnod
>>779
それは気付いてなかったw

じゃあ括弧無しのデメリットは特に思いつかない

781デフォルトの名無しさん2018/10/08(月) 10:26:38.83ID:2rmJ0ycQ
>>774
落ち着け、深呼吸しろ

782デフォルトの名無しさん2018/10/08(月) 11:34:11.42ID:H/mp1NsO
>>774-776
&&・||の右側に、副作用があったら危険!
副作用とは、何かの状態を変えること

ぱっと見ただけでは、副作用が実行されるかされないのかが、わかりにくい。
右側に、副作用が無ければよいけど

if-else 文なんかより可読性が低いから、誤解しやすい

すべての言語で、言われている。
MISRA-C とか、C言語のルールでも、決められている

783デフォルトの名無しさん2018/10/08(月) 12:02:59.41ID:QRotEnod
副作用があるかもしれないから、という理由なら条件分岐関係無くない?
if(a == null)
return;
if(a.get()<=1)
return;
これでget()呼ぶのも副作用あるかもしれないよね?

784デフォルトの名無しさん2018/10/08(月) 12:20:29.15ID:tKqgyITq
>>783
別スレッドによって a が null にされてしまう可能性はあるな。だいたいの場合はそういうスレッドがないか、
またはあると分かっているならロックしてからアクセスするように作るから問題にならないんだろうけど。

785デフォルトの名無しさん2018/10/08(月) 12:26:37.42ID:QRotEnod
ん?こういう理解だけど。参照が渡されてるだけだから
別スレッドが参照を破棄しても関係ないぞ

func1(Object a){
if(a == null)
return;
a.get();//絶対にNPEが起きないマルチスレッド無関係
}
func2(Object a){
a = null;
}

786デフォルトの名無しさん2018/10/08(月) 12:29:19.11ID:r0dViXxq
そもそも式の中で副作用のある関数を呼び出すのは危険
&&や||は評価順序が決まってるからまだマシな方でそれ以外の演算子だと評価順序もどうなるかわからんし

787デフォルトの名無しさん2018/10/08(月) 12:32:49.91ID:QRotEnod
でも副作用がある関数はset,write,update,createとか大体それっぽい名前ついてるし
分かるでしょ?
というか情報処理はCRUDだからcreate,update,delete的な名前が必ずついてる

副作用を広くとらえればログ出力も副作用だけど、そういうのは問題無い
getは副作用無しか問題無い副作用のみ、CRUDのRに相当するものだから

だからコーディング規約を作るなら、CRUDを意識させるようなものであるべきで、
真理式でメソッドを呼び出すなとかいうわけわからん規約を作るべきではない
CRUDのうちRのみ呼び出していい、とすべき

788デフォルトの名無しさん2018/10/08(月) 12:37:02.60ID:QRotEnod
ぶっちゃけCUDでも呼び出していい
結局、意味を捉えて間違えないように書けということでしかない
コーディング規約をどういじくってもそこから逃げれるわけじゃない

789デフォルトの名無しさん2018/10/08(月) 12:43:00.19ID:wqzMNkqt
if (a == 0 || b++ < 1) {
}
こういう書き方をすると一見bが常にインクリメントされるように誤解されやすいからやめとけよって言ってるだけでしょ。

790デフォルトの名無しさん2018/10/08(月) 12:48:22.90ID:QRotEnod
真理式に複数の演算があって、かつ一部に副作用があるとまずい、ってことか

791デフォルトの名無しさん2018/10/08(月) 13:19:09.60ID:H/mp1NsO
副作用・副作用完了点
評価順序・マクロ

MISRA-C でも、こういう間違いやすい所の、ルールは厳しい

792デフォルトの名無しさん2018/10/08(月) 14:53:07.06ID:tKqgyITq
>>785
それならないな。

残るは get() して 1 以下なのを検査した直後に別スレッドによって a の状態が変化して get() が返す値が変わるとかかな。
(そんなの想定の範囲内なら問題ないが)。

793デフォルトの名無しさん2018/10/10(水) 01:35:05.39ID:gneY7b7h
adopt openjdkのjdk11リリースされたじゃん。
ttps://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot

LTSだぞ。
ttps://adoptopenjdk.net/support.html?variant=openjdk11&jvmVariant=hotspot

794デフォルトの名無しさん2018/10/12(金) 06:07:22.65ID:LkXNeCMg
Java 11のJREって無いんですか?

795デフォルトの名無しさん2018/10/12(金) 08:34:35.39ID:kCbZI2NA
クライアントJREは廃止された
今現在、要JREとして世に出ているアプリをエンドユーザーが実行する公式な方法は存在しない(自己責任で開発環境を入れるしかない)
今後のクライアントサイドJavaアプリの唯一の配布方法は、JDKに含まれるコマンドラインツールを使用して
プラットフォーム毎に実行環境とアプリを同梱した実行可能なパッケージを作ることである
クライアントサイドに関しては、もはやJavaはバイナリ互換ではない
OracleはクライアントサイドJavaを段階的に廃止しようとしており、新規には決して使ってはならない

796デフォルトの名無しさん2018/10/12(金) 09:00:21.36ID:U0bHLz7N
>>793
当てにならんよこんなの
こいつらはただのビルド屋で、自分達でソースに手を入れる体制はない
次のバージョンのOpenJDKがリリースされた後もOpenJDK公式リポジトリの旧バージョンのソースに対してLTS向けのパッチが提供されるかどうかは、
オラクル様の温情次第

797デフォルトの名無しさん2018/10/12(金) 20:45:34.37ID:LkXNeCMg
>>795
サンクス

新着レスの表示
レスを投稿する