Upload
ryota-murohoshi
View
798
Download
1
Embed Size (px)
Citation preview
このクラスを含むライブラリがあります(core_v1.jar)
package com.mrstar.versioning_problem.core;
public final class Core { private Core() {}
public static String getTitle() { return "ほげふが";
}
public final static String MESSAGE = "ぴよぴよ!";}
さっきのライブラリに依存するライブラリがあります(framework.jar)
package com.mrstar.versioning_problem.framework;import com.mrstar.versioning_problem.core.Core;
public class Framework { private Framework(){ } public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println(Core.MESSAGE); }}
こんな感じで使います
package com.mrstar;import com.mrstar.versioning_problem.framework.Framework;
public class Main { public static void main(String[] args) { Framework.showTitle(); Framework.showMessage(); }}
実行すると...
package com.mrstar;import com.mrstar.versioning_problem.framework.Framework;
public class Main { public static void main(String[] args) { Framework.showTitle(); // 「ほげふが」って表示される Framework.showMessage(); // 「ぴよぴよ!」って表示される }}
仮の文言を本番用に変更し、バージョンアップ(core_v2.jar)
package com.mrstar.versioning_problem.core;
public final class Core { private Core() {}
public static String getTitle() { return "メインページ"; // さっきまで「ほげふが」 } // さっきまで「ぴよぴよ!」 public final static String MESSAGE = "こんにちは!";
}
core_v2.jarに置き換えて、framework.jarはそのままで
package com.mrstar;import com.mrstar.versioning_problem.framework.Framework;
public class Main { public static void main(String[] args) { Framework.showTitle(); // Q1 なんて表示される? Framework.showMessage(); // Q2 なんて表示される? }}
framework.jarのFramework.java(再掲)
package com.mrstar.versioning_problem.framework;import com.mrstar.versioning_problem.core.Core;
public class Framework { private Framework(){ } public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println(Core.MESSAGE); }}
デコンパイルしたFramework.class
package com.mrstar.versioning_problem.framework;import com.mrstar.versioning_problem.core.Core;
public class Framework { private Framework() {} public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println("ぴよぴよ!"); }}
Framework.javaのコード
package com.mrstar.versioning_problem.framework;import com.mrstar.versioning_problem.core.Core;
public class Framework { private Framework(){ } public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println(Core.MESSAGE); }}
デコンパイルしたFramework.class
package com.mrstar.versioning_problem.framework;import com.mrstar.versioning_problem.core.Core;
public class Framework { private Framework() {} public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println("ぴよぴよ!"); }}
遅くなりましたが自己紹介
• 室星亮太
• 最初はJavaでAndroid+(2016年でもJava6+orz)
• 最近までC#でUnity+(2016年でもC#3.0(一部4.0)+orz)
• 今はTypeScriptでNode.js+(JavaScriptむずいね)
RクラスのリソースID利用例
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // これ!!!ビルドすると整数リテラルに setContentView(R.layout.activity_main); }}