Java関連Tips
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
Twitter
]
開始行:
→[[Java関連]]
→Javaのリフレクション
→Eclipse関連
→JavaのWebアプリ開発
#contents
*Tips集Webサイト [#t58aeb52]
-[[裏Javaメモ>http://www.ne.jp/asahi/hishidama/home/tech/...
--Javaの微妙なネタ
-[[Java(SE) API逆引き辞典>http://always-pg.com/java/j2se_...
-[[Javaのとても小さい小技メモ>http://kamakura.cool.ne.jp/...
-[[Java 逆引きリファレンス>http://www.stackasterisk.jp/te...
-[[Java Tips index@IT>http://www.atmarkit.co.jp/fjava/jav...
-[[Java Tips集>http://www.masatom.in/pukiwiki/Java/TIPS%B...
*文法系Tips [#lcf79da5]
-[[あまり知られていないと思われる Java のインスタンスイニ...
-[[【Java】匿名クラス>https://nompor.com/2017/11/08/post-...
--匿名クラスはコンストラクタでの初期化処理ができません。
--インスタンス化した直後であれば、匿名クラス本体のインス...
--もし、匿名クラスで初期化処理をしたい場合は、この性質を...
-[[Local Variable Type Inference: Style Guidelinesを読ん...
-[[弱い参照とな>http://qiita.com/yyyske/items/daa5c844647...
-[[戻り値が NotNull であることをアノテーションで表現でき...
--@NonNull
--JSR-305 を導入する
-[[privateなコンストラクタのクラスについて>http://java-et...
-[[インタフェースのキャスト>http://www.kab-studio.biz/Pro...
-[[ラベル付きステートメント>http://www.hcn.zaq.ne.jp/no-j...
** ストリームAPI [#f28070a3]
-[[Java8 stream APIサンプルコード>https://qiita.com/rubyt...
-[[Javaでリストの集約(Collectors.groupingBy)>https://qi...
** Optional型 [#mf9b4c34]
-[[クラス java.util.Optionalのおさらいメモ>https://qiita....
-[[`get()`を使うな 〜 敗北者の Optional>https://qii...
**例外処理 [#f7477992]
-[[Java のチェック例外と非チェック例外の考察まとめ>http:/...
-[[Javaのチェック例外と非チェック例外について>http://deta...
**ラムダ式 [#u0e57c9f]
-[[徹底解説! Javaのラムダ式はどういうもので、どう使えばい...
-[[Java 8: Preferred way to count iterations of a lambda?...
--ラムダ式の中で外のカウンタを使うには?
-[[Java 8のStream処理はここまで省略できる!>http://qiita....
**static初期化子とインスタンス初期化子 [#a3085659]
-http://www.genzou.sakura.ne.jp/class/inisharaiza_shokika...
// static初期化子の例
public class MyTest {
static int[] hoge;
static {
hoge = new int[5];
for( int i = 0; i < 5; i++ ){
hoge[i] = i;
}
}
public static void main(String[] args){
for( int i = 0; i <hoge.length; i++) {
System.out.print(MyTest.hoge[i] + ...
}
}
}
// インスタンス初期化子の例
public class MyTest {
static int[] hoge;
{
hoge = new int[5];
for( int i = 0; i < 5; i++ ){
hoge[i] = i;
}
}
public static void main(String[] args){
try {
MyTest m = new MyTest(); // インス...
for( int i = 0; i <hoge.length; i+...
System.out.print(MyTest.ho...
}
} catch( Exception e ) {
System.out.print("例外発生:" + e.t...
e.printStackTrace();
}
}
}
-ArrayListを定義すると同時に初期化するサンプル
ArrayList<HogeEnum> list = new ArrayList<HogeEnum>() {
{ add(HogeEnum.A); }
{ add(HogeEnum.B); }
{ add(HogeEnum.C); }
};
**可変個引数の例 [#y02b00ee]
int sum(Integer... values){
int sum = 0;
for(int val : values){
sum += val;
}
return sum;
}
//呼び出し側
int sum = sum(1,2,3,4,5);
* JavaのSerializableを実際にアプリケーションを動かしなが...
-[[JavaのSerializableを実際にアプリケーションを動かしなが...
*util.Objects [#g06e922b]
-[[クラス java.util.Objectsのおさらいメモ>https://qiita.c...
*ジェネリクス関連 [#b61b01f2]
-[[Javaジェネリクス再入門>http://d.hatena.ne.jp/Nagise/20...
-[[Java変態文法最速マスター>http://d.hatena.ne.jp/Nagise/...
-[[Javaのジェネリクスで,T.class や new T() ができず悩ん...
**Genericsのワイルドカードを使いこなす [#h750be49]
-http://www.ibm.com/developerworks/jp/java/library/j-jtp0...
-http://www.ibm.com/developerworks/jp/java/library/j-jtp0...
**リストを渡してリストを返すようなメソッドでジェネリック...
public <T> List<T> hoge( List<T> list)
-http://www.eeb.co.jp/2007/11/_25.html
--戻り値であるList<T>の前に、<T>という型変数が宣言されて...
--型変数を<T extends Number>のように書くことも可能で、そ...
*日付/時刻処理いろいろ [#wa075aaa]
-[[Javaバージョン別の改元(新元号)対応まとめ>https://qiita...
-Timestamp型からDateを経由してCalendarを作る
java.util.Date = new java.util.Date(ts.getTime());
Calendar now = Calendar.getInstance();
now.setTime(date);
-ISO8601形式の日付をDate型に変換して返す [#r37f066f]
public static Date Iso8601toDate(String isoDate)
throws java.text.ParseException{
try {
Calendar cal =DatatypeConverter.parseDateTime(isoDate);
return cal.getTime();
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
-カレント月(YYYYMM)取得
java.util.Date dtNow = new java.util.Date();
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy...
String ymNow = formatter.format(dtNow);
-1月進めて月を取得
Date dt = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(dt);
calendar.add(Calendar.MONTH, 1);
dt = calendar.getTime();
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy...
String ymNow = formatter.format(dt);
*Cで言うmemsetに当たる処理 [#r78bdfb5]
import java.util.*;
:
byte[] buf = new byte[200];
Arrays.fill(buf,0x20);
*Runtime#addShutdownHookで JVM 終了時に処理を実行する [#g...
-http://www.smallstyle.com/20070215.html
*Velocity [#nca80fcf]
-[[汎用テンプレートエンジンVelocity>http://www.stackaster...
--http://velocity.apache.org/
*マルチスレッド [#z0afd4c1]
-[[マルチスレッドプログラミングの入門>http://programming-...
-チュートリアル
--http://java.sun.com/docs/books/tutorial/essential/concu...
*Eclipseからアプリを実行して、OutOfMemoryErrorが出たでご...
-http://d.hatena.ne.jp/dkfj/20090626/1245983960
-実行->Javaアプリケーションをする前に、Open実行Dialogで設...
*強制ガベージコレクション [#m2465ffe]
-System.gc() もしくは Runtime.getRuntime().gc()
*テキストファイルの読み込み [#l0820c18]
-http://www.tohoho-web.com/java/file.htm
import java.io.*;
class BufferedReaderTest {
public static void main(String[] args) {
try {
FileReader in = new FileReader("file.txt");
BufferedReader br = new BufferedReader(in);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
in.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
* イメージをpngファイルに出力 [#ua836eae]
/**
* pngファイルに出力
* @param im 出力したいイメージ
* @param fname 出力ファイル名
* @throws FileNotFoundException
* @throws IOException
*/
public static void savePng(BufferedImage im, String fna...
throws FileNotFoundException, IOException {
// Open output file.
OutputStream out = new FileOutputStream(fname);
ImageOutputStream ios =
ImageIO.createImageOutputStream(out);
ImageWriter iw = (ImageWriter)ImageIO.
getImageWritersByFormatName("png").next();
iw.setOutput(ios);
iw.write(im);
// Close output file.
out.close();
}
*イメージ⇔バイト列の変換 [#hb7b4c52]
/**
* イメージをバイト列に変換する
* @param im イメージ
* @param formatName フォーマット名 png, bmp, jpeg など
* @return バイト列
* @throws IOException
*/
public static byte[] getBytesFromImage(BufferedImage im...
throws IOException{
if(formatName == null)
formatName = "png";
ByteArrayOutputStream bos = new ByteArrayOutputStream...
ImageIO.write(im, formatName, bos);
return bos.toByteArray();
}
/**
* バイト列からイメージを作成する
* @param bytes
* @return イメージ
* @throws IOException
*/
public static BufferedImage getImageFromBytes(byte[] by...
throws IOException{
ByteArrayInputStream bis = new ByteArrayInputStream(b...
BufferedImage im = ImageIO.read(bis);
return im;
}
*フォントにアンチエイリアスをかける [#f73a05c7]
-参考ページ:http://itpro.nikkeibp.co.jp/article/COLUMN/20...
private void testDrawAnti(Graphics2D g) {
String text = "Limousine";
// HRGB
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASI...
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
g.drawString("HRGB:" + text, 10, 140);
// HBGR
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASI...
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HBGR);
g.drawString("HBGR:" + text, 10, 180);
// VRGB
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASI...
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB);
g.drawString("VRGB:" + text, 10, 220);
// VBGR
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASI...
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VBGR);
g.drawString("VBGR:" + text, 10, 260);
}
*BigDecimalの丸め方 [#p8673458]
-http://always-pg.com/java/j2se_rd/number/setscale.html
* 指定のバイト長さになるようにスペースを詰める [#ba6ea65c]
* @param s 対象の文字列
* @param length つめた結果の長さ(バイト長)
* @param leftPad trueなら左に詰める(文字は右詰になる)
* @return 詰めた文字列
* @throws UnsupportedEncodingException
*/
public static String padSpaceHankaku(String s, int leng...
throwsUnsupportedEncodingException{
if(isEmpty(s)){
return repeatChar(' ', length);
}
else {
//シフトJISでバイトにしたときの長さを得て、足りない...
byte[] bytes = s.getBytes("SJIS");
int spaceLen = length - bytes.length;
if(spaceLen <= 0)
return s;
else {
if(leftPad)
return repeatChar(' ',spaceLen) + s;
else
return s + repeatChar(' ',spaceLen);
}
}
}
*バイト列の16進文字列化 [#tfd6e3a0]
private String toHex(byte buffer[]) {
StringBuffer sb = new StringBuffer(buffer.length * 2);
for (int i = 0; i < buffer.length; i++) {
sb.append(Character.forDigit((buffer[i] & 0xf0)...
sb.append(Character.forDigit(buffer[i] & 0x0f, ...
}
return sb.toString();
}
*jar内のクラスファイルの一覧を得るバッチファイル [#kceae9...
-http://cjasmin.fc2web.com/tips/search_class.html
*前ゼロつける [#h1d74b71]
-文字列に前ゼロ:素朴なやり方
private String padLeadingZero(String value, int width) {
String wrkValue = value;
if(wrkValue != null){
if(wrkValue.length() < width) {
StringBuffer sb = new StringBuffer();
int zeroLen = width - wrkValue.length();
for( int i = 0; i < zeroLen ; i++) {
sb.append("0");
}
wrkValue = sb.append(wrkValue).toString();
}
}
return wrkValue;
}
-左側にn桁のゼロ文字列をつけた上で右n桁のsubstringを使う...
-数値に前ゼロ
String.format("%07d", n)
または
DecimalFormat df = new DecimalFormat();
df.applyPattern("0000000");
String max_str = df.format(n);
*ファイル一覧取得 [#fa0747de]
-http://sattontanabe.blog86.fc2.com/blog-entry-56.html
*Java のスタンドアロンプログラムで終了コードを設定するに...
System.exit(-1);
*PDFを生成する [#tc59c185]
-http://www.atmarkit.co.jp/fjava/javatips/121jspservlet41...
*XMLに対応したProperties [#z37787f0]
-http://www.javainthebox.net/laboratory/J2SE1.5/TinyTips/...
*プロパティファイル読み込み [#zea80fc5]
-下のようにgetPath()でパスを取得する方法ではjarファイルに...
ClassLoader loader = Thread.currentThread().getContextCl...
URL url = loader.getResource("config.properties");
prop.load(url.openStream());
-参考:[[jarファイルをエクスポートしたときファイルを開け...
-リソースフォルダにあるプロパティファイルを読み込む
ClassLoader loader = Thread.currentThread().getContextCl...
URL url = loader.getResource("config.properties");
//パスにスペースなどがあるとURLエンコードされる点に注意
String path = url.getPath();
String path2 = URLDecoder.decode(path, "UTF-16");
prop.load(new FileInputStream(path2));
-http://d.hatena.ne.jp/mikeda/20090325/1238017508
String configFile = "prop.conf";
Properties prop = new Properties();
try {
prop.load(new FileInputStream(configFile));
} catch (IOException e) {
e.printStackTrace();
return;
}
String name = prop.getProperty("name");
String addr = prop.getProperty("addr");
*スタンドアロンアプリで二重起動防止 [#qd1f8983]
-ファイルのロックを使う
-http://oshiete1.goo.ne.jp/qa2030088.html
import java.io.File;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class Sample {
public static void main(String[] args) {
//起動チェック
final FileOutputStream fos = new FileOutputStrea...
final FileChannel fc = fos.getChannel();
final FileLock lock = fc.tryLock();
if (lock == null) {
//既に起動されているので終了する
return;
}
//ロック開放処理を登録
Runtime.getRuntime().addShutdownHook(
new Thread() {
public void run() {
if (lock != null && lock.isValid()) {
lock.release();
}
fc.close();
fos.close();
}
}
);
//処理を続行
}
}
*ImageI/O関連 [#fc0337dc]
-[[ImageI/O APIガイド>http://sdc.sun.co.jp/java/docs/j2se...
--http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guid...
-[[ImageI/O 説明>http://www.javainthebox.net/laboratory/J...
-[[ImageI/Oファイルで画像ファイルを読み書きする>http://ww...
-[[Graphics2Dによる描画>http://codezine.jp/article/detail...
**Graphics2D+ImageI/Oを使って画像に別の画像を挿入したファ...
-参考:http://www.javadrive.jp/java2d/bufferedImage/index2...
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.awt.*;
import java.awt.geom.*;
import javax.imageio.*;
import javax.imageio.stream.ImageOutputStream;
static void outByImageIO() throws Exception{
// イメージの作成
// BufferedImage im = new BufferedImage(600,800,
// BufferedImage.TYPE_IN...
BufferedImage im = ImageIO.read(new File("sample.pn...
BufferedImage im2 = ImageIO.read(new File("test2.jp...
Graphics2D g = im.createGraphics();
g.drawImage(im2, 20,10, null);
g.dispose();
// Open output file.
OutputStream out = new FileOutputStream("test.jpg");
ImageOutputStream ios =
ImageIO.createImageOutputStream(out);
ImageWriter iw = (ImageWriter)ImageIO.
getImageWritersByFormatName("jpeg").next();
iw.setOutput(ios);
iw.write(im);
// Close output file.
out.close();
}
*正規表現によるマッチング [#t445ef73]
import java.util.regex.Matcher;
import java.util.regex.Pattern;
...
public boolean isHogeNumFormat(String arg) {
String regexp = <正規表現の文字列>;
Pattern pat = Pattern.compile(regexp);
return pat.matcher(arg).matches();
}
*シリアルバージョンUIDの生成 [#if425795]
-シリアライズを実装するクラスにはUIDをつける必要がある
-解説:http://www.javaroad.jp/faq/faq_os_eclipse1.htm
-Eclipseではワーニングの出た位置にカーソルを合わせてCtrl+...
*実行時の対応ソース行取得 [#o969aba2]
int line = (new Throwable().getStackTrace()[0]).getLineN...
*Javaオブジェクトのハッシュコードのルール [#w3ff9fa1]
-The hashCode( ) method is supposed to return an int that...
-A properly written hashCode( ) method will follow these ...
--It is repeatable: hashCode(x) must return the same int ...
--It is consistent with equality: if x.equals(y), then x....
--If !x.equals(y), it is not required that x.hashCode( ) ...
-The default hashCode( ) on Sun's JDK returns a machine a...
*コンパイラの警告抑制 [#u5033083]
-↓のアノテーションをメソッドにつけるとキャストのときに出...
@SuppressWarnings("unchecked")
あまり推奨はできないが…
*バイト配列から文字列への変換 [#g90835e2]
result = new String(bytes, offset, length, charsetName);
-charsetName は "shift-jis"とか
*JNDIのlookupをだましてとりあえず動かす [#bd15b3d3]
public class DummyNamingContext implements InitialConte...
public static DummyNamingContext setup() throws Exceptio...
if (!NamingManager.hasInitialContextFactoryBuilder()) {
final DummyNamingContext instance = new DummyNamingC...
NamingManager.setInitialContextFactoryBuilder(instan...
return instance;
}
final Context con = NamingManager.getInitialContext(nu...
if (con instanceof DummyNamingContext) {
return (DummyNamingContext) con;
}
throw new IllegalStateException("No DummyNamingContext...
}
private final Map<Name, Object> nameMap;
private final Map<String, Object> strMap;
@Override
public void bind(final String name, final Object obj)...
this.strMap.put(name, obj);
}
@Override
public Object lookup(final String name) throws NamingExc...
return this.strMap.get(name)
}
...
}
*Javaのソース解析 [#o15fd42f]
-[[JavaParser 使い方メモ>https://qiita.com/opengl-8080/it...
-[[JDTでJavaのソースコード解析を行う>https://qiita.com/es...
-[[Eclipse JDT AST>http://www.ne.jp/asahi/hishidama/home/...
終了行:
→[[Java関連]]
→Javaのリフレクション
→Eclipse関連
→JavaのWebアプリ開発
#contents
*Tips集Webサイト [#t58aeb52]
-[[裏Javaメモ>http://www.ne.jp/asahi/hishidama/home/tech/...
--Javaの微妙なネタ
-[[Java(SE) API逆引き辞典>http://always-pg.com/java/j2se_...
-[[Javaのとても小さい小技メモ>http://kamakura.cool.ne.jp/...
-[[Java 逆引きリファレンス>http://www.stackasterisk.jp/te...
-[[Java Tips index@IT>http://www.atmarkit.co.jp/fjava/jav...
-[[Java Tips集>http://www.masatom.in/pukiwiki/Java/TIPS%B...
*文法系Tips [#lcf79da5]
-[[あまり知られていないと思われる Java のインスタンスイニ...
-[[【Java】匿名クラス>https://nompor.com/2017/11/08/post-...
--匿名クラスはコンストラクタでの初期化処理ができません。
--インスタンス化した直後であれば、匿名クラス本体のインス...
--もし、匿名クラスで初期化処理をしたい場合は、この性質を...
-[[Local Variable Type Inference: Style Guidelinesを読ん...
-[[弱い参照とな>http://qiita.com/yyyske/items/daa5c844647...
-[[戻り値が NotNull であることをアノテーションで表現でき...
--@NonNull
--JSR-305 を導入する
-[[privateなコンストラクタのクラスについて>http://java-et...
-[[インタフェースのキャスト>http://www.kab-studio.biz/Pro...
-[[ラベル付きステートメント>http://www.hcn.zaq.ne.jp/no-j...
** ストリームAPI [#f28070a3]
-[[Java8 stream APIサンプルコード>https://qiita.com/rubyt...
-[[Javaでリストの集約(Collectors.groupingBy)>https://qi...
** Optional型 [#mf9b4c34]
-[[クラス java.util.Optionalのおさらいメモ>https://qiita....
-[[`get()`を使うな 〜 敗北者の Optional>https://qii...
**例外処理 [#f7477992]
-[[Java のチェック例外と非チェック例外の考察まとめ>http:/...
-[[Javaのチェック例外と非チェック例外について>http://deta...
**ラムダ式 [#u0e57c9f]
-[[徹底解説! Javaのラムダ式はどういうもので、どう使えばい...
-[[Java 8: Preferred way to count iterations of a lambda?...
--ラムダ式の中で外のカウンタを使うには?
-[[Java 8のStream処理はここまで省略できる!>http://qiita....
**static初期化子とインスタンス初期化子 [#a3085659]
-http://www.genzou.sakura.ne.jp/class/inisharaiza_shokika...
// static初期化子の例
public class MyTest {
static int[] hoge;
static {
hoge = new int[5];
for( int i = 0; i < 5; i++ ){
hoge[i] = i;
}
}
public static void main(String[] args){
for( int i = 0; i <hoge.length; i++) {
System.out.print(MyTest.hoge[i] + ...
}
}
}
// インスタンス初期化子の例
public class MyTest {
static int[] hoge;
{
hoge = new int[5];
for( int i = 0; i < 5; i++ ){
hoge[i] = i;
}
}
public static void main(String[] args){
try {
MyTest m = new MyTest(); // インス...
for( int i = 0; i <hoge.length; i+...
System.out.print(MyTest.ho...
}
} catch( Exception e ) {
System.out.print("例外発生:" + e.t...
e.printStackTrace();
}
}
}
-ArrayListを定義すると同時に初期化するサンプル
ArrayList<HogeEnum> list = new ArrayList<HogeEnum>() {
{ add(HogeEnum.A); }
{ add(HogeEnum.B); }
{ add(HogeEnum.C); }
};
**可変個引数の例 [#y02b00ee]
int sum(Integer... values){
int sum = 0;
for(int val : values){
sum += val;
}
return sum;
}
//呼び出し側
int sum = sum(1,2,3,4,5);
* JavaのSerializableを実際にアプリケーションを動かしなが...
-[[JavaのSerializableを実際にアプリケーションを動かしなが...
*util.Objects [#g06e922b]
-[[クラス java.util.Objectsのおさらいメモ>https://qiita.c...
*ジェネリクス関連 [#b61b01f2]
-[[Javaジェネリクス再入門>http://d.hatena.ne.jp/Nagise/20...
-[[Java変態文法最速マスター>http://d.hatena.ne.jp/Nagise/...
-[[Javaのジェネリクスで,T.class や new T() ができず悩ん...
**Genericsのワイルドカードを使いこなす [#h750be49]
-http://www.ibm.com/developerworks/jp/java/library/j-jtp0...
-http://www.ibm.com/developerworks/jp/java/library/j-jtp0...
**リストを渡してリストを返すようなメソッドでジェネリック...
public <T> List<T> hoge( List<T> list)
-http://www.eeb.co.jp/2007/11/_25.html
--戻り値であるList<T>の前に、<T>という型変数が宣言されて...
--型変数を<T extends Number>のように書くことも可能で、そ...
*日付/時刻処理いろいろ [#wa075aaa]
-[[Javaバージョン別の改元(新元号)対応まとめ>https://qiita...
-Timestamp型からDateを経由してCalendarを作る
java.util.Date = new java.util.Date(ts.getTime());
Calendar now = Calendar.getInstance();
now.setTime(date);
-ISO8601形式の日付をDate型に変換して返す [#r37f066f]
public static Date Iso8601toDate(String isoDate)
throws java.text.ParseException{
try {
Calendar cal =DatatypeConverter.parseDateTime(isoDate);
return cal.getTime();
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
-カレント月(YYYYMM)取得
java.util.Date dtNow = new java.util.Date();
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy...
String ymNow = formatter.format(dtNow);
-1月進めて月を取得
Date dt = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(dt);
calendar.add(Calendar.MONTH, 1);
dt = calendar.getTime();
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy...
String ymNow = formatter.format(dt);
*Cで言うmemsetに当たる処理 [#r78bdfb5]
import java.util.*;
:
byte[] buf = new byte[200];
Arrays.fill(buf,0x20);
*Runtime#addShutdownHookで JVM 終了時に処理を実行する [#g...
-http://www.smallstyle.com/20070215.html
*Velocity [#nca80fcf]
-[[汎用テンプレートエンジンVelocity>http://www.stackaster...
--http://velocity.apache.org/
*マルチスレッド [#z0afd4c1]
-[[マルチスレッドプログラミングの入門>http://programming-...
-チュートリアル
--http://java.sun.com/docs/books/tutorial/essential/concu...
*Eclipseからアプリを実行して、OutOfMemoryErrorが出たでご...
-http://d.hatena.ne.jp/dkfj/20090626/1245983960
-実行->Javaアプリケーションをする前に、Open実行Dialogで設...
*強制ガベージコレクション [#m2465ffe]
-System.gc() もしくは Runtime.getRuntime().gc()
*テキストファイルの読み込み [#l0820c18]
-http://www.tohoho-web.com/java/file.htm
import java.io.*;
class BufferedReaderTest {
public static void main(String[] args) {
try {
FileReader in = new FileReader("file.txt");
BufferedReader br = new BufferedReader(in);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
in.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
* イメージをpngファイルに出力 [#ua836eae]
/**
* pngファイルに出力
* @param im 出力したいイメージ
* @param fname 出力ファイル名
* @throws FileNotFoundException
* @throws IOException
*/
public static void savePng(BufferedImage im, String fna...
throws FileNotFoundException, IOException {
// Open output file.
OutputStream out = new FileOutputStream(fname);
ImageOutputStream ios =
ImageIO.createImageOutputStream(out);
ImageWriter iw = (ImageWriter)ImageIO.
getImageWritersByFormatName("png").next();
iw.setOutput(ios);
iw.write(im);
// Close output file.
out.close();
}
*イメージ⇔バイト列の変換 [#hb7b4c52]
/**
* イメージをバイト列に変換する
* @param im イメージ
* @param formatName フォーマット名 png, bmp, jpeg など
* @return バイト列
* @throws IOException
*/
public static byte[] getBytesFromImage(BufferedImage im...
throws IOException{
if(formatName == null)
formatName = "png";
ByteArrayOutputStream bos = new ByteArrayOutputStream...
ImageIO.write(im, formatName, bos);
return bos.toByteArray();
}
/**
* バイト列からイメージを作成する
* @param bytes
* @return イメージ
* @throws IOException
*/
public static BufferedImage getImageFromBytes(byte[] by...
throws IOException{
ByteArrayInputStream bis = new ByteArrayInputStream(b...
BufferedImage im = ImageIO.read(bis);
return im;
}
*フォントにアンチエイリアスをかける [#f73a05c7]
-参考ページ:http://itpro.nikkeibp.co.jp/article/COLUMN/20...
private void testDrawAnti(Graphics2D g) {
String text = "Limousine";
// HRGB
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASI...
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
g.drawString("HRGB:" + text, 10, 140);
// HBGR
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASI...
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HBGR);
g.drawString("HBGR:" + text, 10, 180);
// VRGB
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASI...
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB);
g.drawString("VRGB:" + text, 10, 220);
// VBGR
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASI...
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VBGR);
g.drawString("VBGR:" + text, 10, 260);
}
*BigDecimalの丸め方 [#p8673458]
-http://always-pg.com/java/j2se_rd/number/setscale.html
* 指定のバイト長さになるようにスペースを詰める [#ba6ea65c]
* @param s 対象の文字列
* @param length つめた結果の長さ(バイト長)
* @param leftPad trueなら左に詰める(文字は右詰になる)
* @return 詰めた文字列
* @throws UnsupportedEncodingException
*/
public static String padSpaceHankaku(String s, int leng...
throwsUnsupportedEncodingException{
if(isEmpty(s)){
return repeatChar(' ', length);
}
else {
//シフトJISでバイトにしたときの長さを得て、足りない...
byte[] bytes = s.getBytes("SJIS");
int spaceLen = length - bytes.length;
if(spaceLen <= 0)
return s;
else {
if(leftPad)
return repeatChar(' ',spaceLen) + s;
else
return s + repeatChar(' ',spaceLen);
}
}
}
*バイト列の16進文字列化 [#tfd6e3a0]
private String toHex(byte buffer[]) {
StringBuffer sb = new StringBuffer(buffer.length * 2);
for (int i = 0; i < buffer.length; i++) {
sb.append(Character.forDigit((buffer[i] & 0xf0)...
sb.append(Character.forDigit(buffer[i] & 0x0f, ...
}
return sb.toString();
}
*jar内のクラスファイルの一覧を得るバッチファイル [#kceae9...
-http://cjasmin.fc2web.com/tips/search_class.html
*前ゼロつける [#h1d74b71]
-文字列に前ゼロ:素朴なやり方
private String padLeadingZero(String value, int width) {
String wrkValue = value;
if(wrkValue != null){
if(wrkValue.length() < width) {
StringBuffer sb = new StringBuffer();
int zeroLen = width - wrkValue.length();
for( int i = 0; i < zeroLen ; i++) {
sb.append("0");
}
wrkValue = sb.append(wrkValue).toString();
}
}
return wrkValue;
}
-左側にn桁のゼロ文字列をつけた上で右n桁のsubstringを使う...
-数値に前ゼロ
String.format("%07d", n)
または
DecimalFormat df = new DecimalFormat();
df.applyPattern("0000000");
String max_str = df.format(n);
*ファイル一覧取得 [#fa0747de]
-http://sattontanabe.blog86.fc2.com/blog-entry-56.html
*Java のスタンドアロンプログラムで終了コードを設定するに...
System.exit(-1);
*PDFを生成する [#tc59c185]
-http://www.atmarkit.co.jp/fjava/javatips/121jspservlet41...
*XMLに対応したProperties [#z37787f0]
-http://www.javainthebox.net/laboratory/J2SE1.5/TinyTips/...
*プロパティファイル読み込み [#zea80fc5]
-下のようにgetPath()でパスを取得する方法ではjarファイルに...
ClassLoader loader = Thread.currentThread().getContextCl...
URL url = loader.getResource("config.properties");
prop.load(url.openStream());
-参考:[[jarファイルをエクスポートしたときファイルを開け...
-リソースフォルダにあるプロパティファイルを読み込む
ClassLoader loader = Thread.currentThread().getContextCl...
URL url = loader.getResource("config.properties");
//パスにスペースなどがあるとURLエンコードされる点に注意
String path = url.getPath();
String path2 = URLDecoder.decode(path, "UTF-16");
prop.load(new FileInputStream(path2));
-http://d.hatena.ne.jp/mikeda/20090325/1238017508
String configFile = "prop.conf";
Properties prop = new Properties();
try {
prop.load(new FileInputStream(configFile));
} catch (IOException e) {
e.printStackTrace();
return;
}
String name = prop.getProperty("name");
String addr = prop.getProperty("addr");
*スタンドアロンアプリで二重起動防止 [#qd1f8983]
-ファイルのロックを使う
-http://oshiete1.goo.ne.jp/qa2030088.html
import java.io.File;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class Sample {
public static void main(String[] args) {
//起動チェック
final FileOutputStream fos = new FileOutputStrea...
final FileChannel fc = fos.getChannel();
final FileLock lock = fc.tryLock();
if (lock == null) {
//既に起動されているので終了する
return;
}
//ロック開放処理を登録
Runtime.getRuntime().addShutdownHook(
new Thread() {
public void run() {
if (lock != null && lock.isValid()) {
lock.release();
}
fc.close();
fos.close();
}
}
);
//処理を続行
}
}
*ImageI/O関連 [#fc0337dc]
-[[ImageI/O APIガイド>http://sdc.sun.co.jp/java/docs/j2se...
--http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guid...
-[[ImageI/O 説明>http://www.javainthebox.net/laboratory/J...
-[[ImageI/Oファイルで画像ファイルを読み書きする>http://ww...
-[[Graphics2Dによる描画>http://codezine.jp/article/detail...
**Graphics2D+ImageI/Oを使って画像に別の画像を挿入したファ...
-参考:http://www.javadrive.jp/java2d/bufferedImage/index2...
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.awt.*;
import java.awt.geom.*;
import javax.imageio.*;
import javax.imageio.stream.ImageOutputStream;
static void outByImageIO() throws Exception{
// イメージの作成
// BufferedImage im = new BufferedImage(600,800,
// BufferedImage.TYPE_IN...
BufferedImage im = ImageIO.read(new File("sample.pn...
BufferedImage im2 = ImageIO.read(new File("test2.jp...
Graphics2D g = im.createGraphics();
g.drawImage(im2, 20,10, null);
g.dispose();
// Open output file.
OutputStream out = new FileOutputStream("test.jpg");
ImageOutputStream ios =
ImageIO.createImageOutputStream(out);
ImageWriter iw = (ImageWriter)ImageIO.
getImageWritersByFormatName("jpeg").next();
iw.setOutput(ios);
iw.write(im);
// Close output file.
out.close();
}
*正規表現によるマッチング [#t445ef73]
import java.util.regex.Matcher;
import java.util.regex.Pattern;
...
public boolean isHogeNumFormat(String arg) {
String regexp = <正規表現の文字列>;
Pattern pat = Pattern.compile(regexp);
return pat.matcher(arg).matches();
}
*シリアルバージョンUIDの生成 [#if425795]
-シリアライズを実装するクラスにはUIDをつける必要がある
-解説:http://www.javaroad.jp/faq/faq_os_eclipse1.htm
-Eclipseではワーニングの出た位置にカーソルを合わせてCtrl+...
*実行時の対応ソース行取得 [#o969aba2]
int line = (new Throwable().getStackTrace()[0]).getLineN...
*Javaオブジェクトのハッシュコードのルール [#w3ff9fa1]
-The hashCode( ) method is supposed to return an int that...
-A properly written hashCode( ) method will follow these ...
--It is repeatable: hashCode(x) must return the same int ...
--It is consistent with equality: if x.equals(y), then x....
--If !x.equals(y), it is not required that x.hashCode( ) ...
-The default hashCode( ) on Sun's JDK returns a machine a...
*コンパイラの警告抑制 [#u5033083]
-↓のアノテーションをメソッドにつけるとキャストのときに出...
@SuppressWarnings("unchecked")
あまり推奨はできないが…
*バイト配列から文字列への変換 [#g90835e2]
result = new String(bytes, offset, length, charsetName);
-charsetName は "shift-jis"とか
*JNDIのlookupをだましてとりあえず動かす [#bd15b3d3]
public class DummyNamingContext implements InitialConte...
public static DummyNamingContext setup() throws Exceptio...
if (!NamingManager.hasInitialContextFactoryBuilder()) {
final DummyNamingContext instance = new DummyNamingC...
NamingManager.setInitialContextFactoryBuilder(instan...
return instance;
}
final Context con = NamingManager.getInitialContext(nu...
if (con instanceof DummyNamingContext) {
return (DummyNamingContext) con;
}
throw new IllegalStateException("No DummyNamingContext...
}
private final Map<Name, Object> nameMap;
private final Map<String, Object> strMap;
@Override
public void bind(final String name, final Object obj)...
this.strMap.put(name, obj);
}
@Override
public Object lookup(final String name) throws NamingExc...
return this.strMap.get(name)
}
...
}
*Javaのソース解析 [#o15fd42f]
-[[JavaParser 使い方メモ>https://qiita.com/opengl-8080/it...
-[[JDTでJavaのソースコード解析を行う>https://qiita.com/es...
-[[Eclipse JDT AST>http://www.ne.jp/asahi/hishidama/home/...
ページ名: