Java入門・初心者質問スレ Part.10

■ このスレッドは過去ログ倉庫に格納されています
2020/04/01(水) 15:09:15.95ID:9COIb57q0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.9
https://mevius.5ch.net/test/read.cgi/tech/1552143555/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
552デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/08/31(月) 17:53:40.86ID:RyTJNMW10
>>549
実装を強いているのはJavaなの?
おせっかいなIDEの仕業じゃない?
553デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/08/31(月) 17:55:39.21ID:RyTJNMW10
Javaが女とするとIDEは妹
にーにequalsも実装して欲しいの
と言われたらたとえ必要なくても嬉しいだろ
そういうことです
2020/08/31(月) 18:33:13.47ID:SaPbM6u7M
Javaは細かい不満が積み重なって大きなストレスになってる

プロパティが言語機能じゃない
yield returnがない
async awaitがない
ジェネリックが型消去
ラムダが検査例外に引っかかる
null合体演算子がない
null伝搬演算子がない
標準のDIが使いにくい
文字が==で比較できない
実数型の四則演算がメソッド
例外メッセージが不親切
アノテーションだらけで気持ち悪い


数え上げたらキリがないね
2020/08/31(月) 20:20:58.12ID:bQj/ETMha
comparableの実装ってcompareToだけでequalsの実装まで求められなくね?
2020/08/31(月) 21:01:09.88ID:9Rs+3V+X0
compareToとequalsとの一貫性は強く推奨されるという位置付けで
必須ではないね
557デフォルトの名無しさん (ワッチョイ 7901-Jo2y)
垢版 |
2020/08/31(月) 22:28:55.46ID:1dx8I1bu0
強く推奨されちゃってるからLintとかに引っかかる
→ コミットできない(職場のルール)
558デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/09/01(火) 09:37:19.67ID:PZXbhIm50
強く推奨されるのなら仕方がない
2020/09/01(火) 10:26:57.10ID:ueCtOTIMM
そうやって妥協した結果がJavaの使いにくさに繋がった
KAIZENを怠ったのだ
2020/09/01(火) 12:56:40.40ID:cIJrFHrq0
Java氏の生きづらさの主因は既に普及しすぎていること
船頭多くして船動かず、役人多くして事絶えず
ちょっとした予約語すら追加できやしない
幸せになるには皆がえいやとKotlinに移行するしかない
2020/09/01(火) 13:58:10.84ID:SHJ3oQib0
最近のJavaは言語自体の拡張も積極的にやってるぞ
昔はクラスライブラリを充実させるばかりで構文拡張は不可侵聖域みたいな感じだったのにな
2020/09/01(火) 14:01:53.89ID:I+5m/p/nM
genericが型消去になるとか構造体がない問題とか
ランタイムまで修正しないと対応できないっぽいクソが結構あるからなあ
リフレクション使ったコードにも影響でそう
javaはもう詰んでる感じがする
2020/09/01(火) 14:31:08.49ID:LNiTvfH2M
なんかハリボテジェネリクス問題ばかりが変にフィーチャーされたせいで、JVMの仕様弄るなんてとんでもない絶対無理みたいな謎の認識がある人が多いみたいだけど、
実際にはOracleになってからJVMは拡張されまくってるんだよ
単純に資金力の問題でしかないの
564デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/09/01(火) 15:04:59.55ID:PZXbhIm50
お前らがサンを買わなかったせいだぞ!
565デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/09/01(火) 15:06:54.57ID:PZXbhIm50
型を一生懸命やりたければScalaがある
コードを簡潔に書きたければKotlinがある
Javaは互換性持たせつつベストを尽くしてる
2020/09/01(火) 15:11:21.09ID:wOMDGK4nM
Javaじゃないじゃん
567デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/09/01(火) 15:34:51.80ID:PZXbhIm50
じゃあなんですか、RubyもPythonもJavaじゃないというんですか!?
568デフォルトの名無しさん (ワッチョイ 7901-yRqa)
垢版 |
2020/09/01(火) 15:49:58.58ID:/xk9LnpH0
PythonはJavaだけど、RubyはPerlでしょ。
2020/09/01(火) 15:56:49.36ID:cIJrFHrq0
Javaが拡張を積極的にやってるのはわかる
でもパターンマッチングひとつ実現するのにJava20くらいまで待たされそうなペースじゃん
null安全がやって来るのはJava40くらいか?
みんな老人になってしまったとさ
めでたしめでたし
570デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/09/01(火) 16:57:58.81ID:PZXbhIm50
僕はnull好きだぞ、nullは友達だよ
2020/09/01(火) 18:00:56.75ID:SHJ3oQib0
>>569
まあそうだけどさ3年で6進むからJava 20なんてすぐだよ
Java 6からJava 7まで5年掛かってたというのに
572デフォルトの名無しさん (ワッチョイ 7901-Jo2y)
垢版 |
2020/09/01(火) 18:20:30.29ID:Z9W01AEm0
Genericsの型消去のせいで
new T()できないんだね
2020/09/01(火) 19:31:43.66ID:wOMDGK4nM
ここまで進化が遅いと既存資産だけJavaで新規は別言語で、ってやったほうがいい
.NET 5からJavaクラス呼べるようになるから、もうそっちでいいや
2020/09/01(火) 19:36:45.49ID:+1UaEkn20
Factoryクラスをわたせばいいだろう?
575デフォルトの名無しさん (ワッチョイ 7901-Jo2y)
垢版 |
2020/09/01(火) 19:39:29.54ID:Z9W01AEm0
Javaから別の言語にトランスパイルして移行
とか現実的に可能だろうか
2020/09/01(火) 19:39:42.22ID:+1UaEkn20
商用Javaは8まで
今後は進化のブランチが切られるだろう
2020/09/01(火) 19:47:46.92ID:iM2Va31TM
>>575
参照してるライブラリも全部ソースあるならあるいは
578デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/09/01(火) 19:49:42.84ID:PZXbhIm50
>>573
マジで、ドトネトすごい
2020/09/01(火) 20:03:56.01ID:iM2Va31TM
>>578
csprojにjarのパス書くだけで使えるってさ
580デフォルトの名無しさん (ワッチョイ 8602-vr3K)
垢版 |
2020/09/01(火) 23:58:08.93ID:eZGqCDxn0
有料で配信してる動画を保存するスクリプト作るのってむずかしいです?
581デフォルトの名無しさん (ワッチョイ 5fad-XrX+)
垢版 |
2020/09/02(水) 02:37:45.44ID:R9sLvDbu0
Kotlin もよろしく
582デフォルトの名無しさん (ワッチョイ 7f63-aZLl)
垢版 |
2020/09/02(水) 08:41:21.79ID:yy35G5fq0
>>560
kotlinバカは死んでいいよ。
Javaに出張ってくんなカス。
583デフォルトの名無しさん (ワッチョイ 0701-P8XZ)
垢版 |
2020/09/02(水) 19:01:19.84ID:9/rkp9iy0
Java初心者質問スレでこぞってJavaこき下ろしててわろた
584デフォルトの名無しさん (ワッチョイ bf01-YWaO)
垢版 |
2020/09/03(木) 10:58:06.77ID:9qPM9lLi0
MET10-J. compareTo() メソッドを実装する場合メソッドの一般契約に従う
https://www.jpcert.or.jp/m/java-rules/met10-j.html

こういうのがあるんだーねー
たしかに比較するときにequals使えば良いのかcompareTo使えば良いのか
迷うようなオブジェクトは嫌だわー
2020/09/04(金) 12:19:02.23ID:n9bltVZHM
C#でこういうことができるんだけどJavaで出来る?

void F(A a) { WriteLine("A"); }
void F(B b) { WriteLine("B"); }
void F(object o) { throw ArgumentException("TypeMissMatch"); }

void InvokeF(object o) { F(o as dynamic); }

InvokeF(new A()); // F(A)が呼ばれる
InvokeF(new B()); // F(B)が呼ばれる

一個一個instanceofで分岐しないとだめかな
2020/09/05(土) 02:00:02.55ID:7YdQk2H60
無理
2020/09/05(土) 02:46:07.99ID:9Silsq9N0
初めまして。

割り込んですみません。突然なんですが、掲示板を利用している者が
アク禁で規制が掛けられた場合、自分で解く方法はないでしょうか?。
2020/09/05(土) 03:15:30.18ID:1i4enb9n0
>>585
https://paiza.io/projects/Kznlt6QiTmJCZHErPfcBtA
2020/09/05(土) 09:34:06.70ID:0lqzi+R60
>>587
その質問とJavaの関係を詳しく
2020/09/07(月) 03:18:23.08ID:XdFDRYmV0
CとOCamlとHaskellを少しずつイジってJavaに来たけど妙に難しい
出てくる用語を調べて…サンプルコードと見比べながら理解して…
2020/09/07(月) 09:31:01.16ID:DSNLMJBI0
知識はそうやって肉付けするんや
2020/09/08(火) 00:12:38.18ID:rmjeK4rZ0
誤ってOracle jdkをダウンロードしてまだインストールしていないのですが、これは有償になるのでしょうか?
2020/09/08(火) 00:22:56.77ID:5OkAYp9w0
Oracle JDKも開発・検証用途なら無償で使えるので
インストール=有料とはならない

本番環境で業務運用するときはライセンス契約が必要
2020/09/08(火) 00:28:16.52ID:rmjeK4rZ0
なるほど…ホッとしました
ありがとうございました
2020/09/08(火) 11:16:07.71ID:16zRjsyPM
何でほっと出来るんだろうな。
自分でライセンス読まないやつはそのうち痛い目に合うぞ。
後で嘘だとわかってもOracleは知ったことでないから遠慮なく金取るよ。
2020/09/08(火) 12:52:12.70ID:czqs/X8sp
許諾される個人使用はもとより、インストールもしていない状況です
使うにしても個人の学習用でしかなかったのですが、万一ライセンスに抵触したらと不安になり、インストールせず削除しました
2020/09/08(火) 13:52:51.94ID:5OkAYp9w0
>>595
ビギナーを過度に脅すJavaおじさん
仕事もできなさそうですね
2020/09/08(火) 13:58:24.92ID:/bMSwYSJ0
仮に有料だとしても使う前に入力を求められるでしょ普通
599デフォルトの名無しさん (ワッチョイ bf01-YWaO)
垢版 |
2020/09/08(火) 14:07:14.61ID:r41CjiKh0
おじさんの90%はバイアスでできています
2020/09/08(火) 15:43:17.33ID:/zYkoffM0
経験といいなさい
2020/09/08(火) 21:15:52.22ID:16zRjsyPM
仕事できなさそうってセリフは大抵仕事できない奴が吐くよな。
602デフォルトの名無しさん (ワッチョイ bf01-YWaO)
垢版 |
2020/09/08(火) 21:21:02.03ID:r41CjiKh0
バイアスおじさんだ
2020/09/08(火) 21:40:35.84ID:/bMSwYSJ0
>>601
自己投影だからでは
604デフォルトの名無しさん (ワッチョイ 5fad-KyQf)
垢版 |
2020/09/08(火) 23:58:50.51ID:h7Ynbo6B0
これにしとけ
https://adoptopenjdk.net/
2020/09/11(金) 10:33:52.14ID:dBHDc2uPa
C#のLinqは拡張メソッドで自作のLinqメソッドを追加できますがJava stream apiで同じことをしたい場合はどうすればいいでしょうか
2020/09/11(金) 12:13:47.19ID:JdYmOH8YM
できません
OreOreStream.from(stream).oreOreFunc()
みたいに独自の型にラップするしかない
2020/09/11(金) 12:29:27.73ID:Dgb8b0D7M
>>606
それはちょっと面倒ですね…
不格好だけどこれで妥協します
var ss = myFunc(s);
ss = myFunc2(ss);
ss = myFunc3(ss);
608デフォルトの名無しさん (ワッチョイ eaad-oSME)
垢版 |
2020/09/11(金) 13:41:30.96ID:PBBl1CU30
Kotlin もよろしく
2020/09/11(金) 21:52:07.05ID:u75LGtz/0
>>605
拡張メソッドの考え方は異端だと思ったほうがいい。
スクリプト系だと当たり前のようにできる気もするけど、
OOPとしてはできないのが当たり前。
2020/09/12(土) 00:44:56.25ID:41TrRnRRM
スクリプトのはオブジェクトを変更して後からメソッドを生やすから異端だけど
C#のやってることは単にmethod(obj, p1, p2, ...)の糖衣構文でしかないから別に異端と言うほどのことでもない
2020/09/12(土) 16:41:21.16ID:ZBm+9Y+Jd
真面目にjavaってかプログラムに手をつけたばかりだけど、早く理解したい
612デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/12(土) 22:11:46.86ID:wMTnI8uy0
>>611
オブジェクト指向の話は理解できなくても、スルーして進めた方がいいよ。

強制的にコードがオブジェクト指向設計風になるのはJavaの欠点だから。
2020/09/13(日) 02:03:40.38ID:YF8YS6Ny0
オブジェクト指向を否定してまでjavaを使うシチュはあまりないと思う
ライブラリの都合で他の言語を選べない時はあるのかもしれないけど
2020/09/14(月) 16:20:21.11ID:Im1fOuuHa
Javaがコンパイルできず、困っております。
超基本のコードですがコンパイルすることができません…。

class Greeting {
public static void main(String[] args) {
System.out.println("Hello World");
}
}


これをコンパイルしようとすると

PS C:\Users\Owner\Desktop\jp> javac Greeting.java
Greeting.java:1: エラー: Greetingの書込み中にエラーが発生しました:
C:\Users\Owner\Desktop\jp\Greeting.class
class Greeting {
^
エラー1個

コマンド プロンプトで
\Users\Owner\Desktop\jp内にあることを確認し、
拡張子もjavaで保存してます。

ネットで見た他の人の質問では、javaのファイル場所の問題でしたが
場所を変えてもコンパイルできませんでした。

もし解決策分かれば教えてください!!
615デフォルトの名無しさん (ワッチョイ 9e01-bFss)
垢版 |
2020/09/14(月) 16:55:14.17ID:I0h6BMX60
>>614
Greeting.class
が存在していて読み取り専用になってるんじゃないかな
616デフォルトの名無しさん (ワッチョイ 6aa5-6XXA)
垢版 |
2020/09/14(月) 17:10:37.19ID:xV8mpaUY0
Cドライブ直下に
my_source_code
というフォルダを作って、あとはそこでやる
2020/09/17(木) 17:32:58.00ID:IOLH/98P0
適切なスレが判断出来ないので生きているここで質問させて下さい。
これからJavaを学ぶに当たりメモリ16G、i7 3770のPCでスペックは足りるでしょうか?
調べてもふわっとした解答やら幅があり判断しかねています。
そろそろ潮時とは思っているのですが、いざ新調する場合は別件でDTMと多少ゲームをするので、半端なものよりはある程度のスペックまで盛ろうと思っています。
宜しくお願いします。
2020/09/17(木) 17:47:55.79ID:N0wmq1hya
Javaの勉強なんて8Gあれば十分よ
2020/09/17(木) 18:11:31.58ID:jOMm6/5I0
Javaで〇〇を作りたい
じゃなくて、Java の勉強でしょ?
16G とか完全にオーバーキルだよ
2020/09/17(木) 19:03:04.37ID:RlKjeCDe0
オーバースペック?
621デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/17(木) 19:07:35.20ID:H8Ldt8Jg0
オーバーオール
2020/09/17(木) 19:16:04.70ID:jOMm6/5I0
ふざけた感覚で書いただけだ
日本語おじさんやめてくれ
2020/09/17(木) 19:25:07.99ID:NHfa1bvj0
DTM なら、CPU-i7 で保証期間は最大、メモリ最大(32, 64GB)まで積む

SSD は、256GB 以上。
128GB では、仮想OS では少なすぎる。
Windows・Linux 各50GB ずつで足りない

Windows 10 も、Docker が必要なので、プロ版にする。
プリインストールなら5千円ぐらいで、後で入れると高いかも
2020/09/17(木) 19:46:16.44ID:IOLH/98P0
沢山のレス有難う御座います。
現状でもプログラミングには足りるようなので、DTMに合わせたスペックでじっくり考えたいと思います。
流石にDTMには余裕が無くなってきたので早めに買いたいんですけどね(チラ裏
>>623
後半全く知識がない部分なのでメモさせて頂きました。

皆さん有難う御座いました。
2020/09/17(木) 20:18:40.05ID:RlKjeCDe0
日本語?
2020/09/17(木) 20:51:49.53ID:IOLH/98P0
>>625
暇みたいだから付き合うけど質問者の俺が理解したから問題ない
627デフォルトの名無しさん (アウアウクー MMcb-VvsD)
垢版 |
2020/09/18(金) 22:48:57.99ID:udr5OOFCM
パソコン初心者レベルの話だなw
2020/09/19(土) 16:37:58.10ID:BU6HDwC+a
614です。回答ありがとうございます。
classファイル、ファイル位置も含め色々とやってみましたが
javacできませんでした。。。

インストールからやり直してみたいと思います。
ありがとうございました!
2020/09/30(水) 16:51:29.76ID:EGMYSLZG0
Javaを始めたばかりです
別クラス内の配列(要素数が数千ほどの整数)を使いたいのですが、どのように使ったら良いでしょう

1.ゲッターで毎回配列の先頭アドレスを得て値を取り出す(コストが大きいですか?
2.ゲッターで得た配列の先頭アドレスを、配列を使うクラスのポインタにコピーして、値を取り出す
3.ゲッターに配列のインデックスを渡して、要素を得る(安全?

検索をかけてもよく分からないため、一般的な方法を教えて下さいm(_ _)m
2020/09/30(水) 17:53:59.30ID:WlSk5DgNa
配列そのままゲッターで渡したらあかんの?
2020/09/30(水) 18:09:08.65ID:zgB55E/r0
>>629
1の方法でも大丈夫ですよコストが高いということはないです
あなたが先頭のアドレスと書いている通りJavaの配列はヒープ上に存在するオブジェクトであり参照を介してアクセスされます
メソッドの戻り値を受け取って他の配列(これも参照)に代入しても数千の要素がコピーされることはありません
2020/09/30(水) 19:00:12.93ID:EGMYSLZG0
>>631
ありがとうございます!安心できました。
2020/09/30(水) 22:43:30.48ID:IjY0yzaga
微妙な大きさですね
もう少し大きければRDBお勧めになるのに
2020/10/01(木) 04:02:18.23ID:Z7yFiYSE0
いまや GB オーダーのメモリ積むのが普通だから
整数数千なんて桁がいくつかあがっても余裕
ADVゲームなんかでも、文章をメモリに全のせ余裕
メモリ関連のボトルネックは大体がグラフィクス
635デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 01:54:11.05ID:ChxT/cO/0
>>629
Javaを無理やりC言語風にしたいの?

getterメソッドがただの関数になっていて、オブジェクトに対して直接、参照するのは、Javaかどうかの話ではないぞ。
636デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 01:58:33.07ID:ChxT/cO/0
>>634
Javaの仕様、OSの仕様、ハードウェアの仕様で、数ギガバイトは大きな壁になる境界です。

すべてをメモリ上に読み込むのは、すぐに破綻する設計で初心者がよくやらかします。
637デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 02:02:10.42ID:ChxT/cO/0
>>632
参照渡しと値渡しはJava以前の話。
2020/10/02(金) 06:34:46.44ID:Whvs+WDZ0
CとJavaには値渡ししかない
C++とC#には値渡し・参照渡しの両方がある
2020/10/02(金) 07:21:03.95ID:pjFaN42j0
Javaをインストールしたパソコンでしか動かせないのに。そしてVM経由で遅いとのこと。
どうせWindowsしか使わないのに、多数存在するプログラム言語の中で、なぜJavaなのか。
2020/10/02(金) 07:25:02.55ID:pjFaN42j0
職場のパソコンでは、Javaインストールされてないし、この言語を使えてもそれを活用できないしな。
2020/10/02(金) 08:46:58.73ID:CXw5HWK1a
Javaはネットワーク前提の家電用だったから
2020/10/02(金) 10:43:43.01ID:ooD45Zz30
セレブエンジニアのフリーエンジニア・クリエイターの小松和貴

Javaの学習だけはやめとけ!その先にあるものは・・絶望
https://www.youtube.com/watch?v=bH3XIIzZxoI

Java をやる会社は、スマホ・インターネット禁止だから、本で調べるw
また、ブラック企業で過労死・いじめられるから、うつ病になって一生終わる
2020/10/02(金) 11:12:26.61ID:Whvs+WDZ0
>>639
Javaはインストールしなくても使えるよ
最近はアプリに小さなJavaランタイムがバンドルされてるからね
2020/10/02(金) 15:59:13.74ID:Yktgr9r30
おまいら、すまないが助けてほしいのだか。。。
LINE notifyを使って自分のライングループに数文字程度のメッセージをテストで送りたい。

今、android studioでコードくんでるのだがうまくいかない。。。。【java】
もう、1weekぐらい悩んでる。。。。
サンプル的なサイト、コードないだろうか?
javaやりだしてまもないから、なんかC#とちがうな。。
2020/10/02(金) 21:28:06.66ID:gnXlCB/RM
>>644
AndroidはjavaともちょとちがうからAndroidスレ行った方が良いかも
2020/10/02(金) 23:14:53.75ID:Yktgr9r30
>>645
androidスレがいいのか。。。。
了解、サンクス。
いってみる。。
2020/10/03(土) 00:21:52.93ID:xp+vOEo30
Android Studioを使ってAndroidアプリじゃないただのJavaのコードを書いてるのかと
2020/10/03(土) 00:27:10.02ID:oWt44Ygxd
こういう質問する人はそもそもcurlで叩いてすら無さそう……

curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" -F "message=test" https://notify-api.line.me/api/notify

をやってみてそれが上手く行ったらJavaに入れてみようぜ
649デフォルトの名無しさん (ワッチョイ b301-DXem)
垢版 |
2020/10/03(土) 16:19:00.16ID:5Ix2WENy0
>>638
えっ?
2020/10/03(土) 19:04:43.96ID:vTsN20CK0
>>636
ふーん、じゃあ具体的にどういうプログラムで、どういうOS、Java、ハードウェアの仕様で大きな壁になるの?
2020/10/03(土) 19:11:10.74ID:5eUUw9pOH
>>649
>>638 で正しいですよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況