我们知道java中"final"关键字的用途.在将变量声明为final时,我们必须初始化变量.比如" final int a = 10;" 我们无法改变"a"的价值.但是如果我们选择HashTable,它甚至可以添加一些值,甚至可以将HashTable声明为final.
例::
private static final Hashtable<String,Integer> MYHASH = new Hashtable<String,Integer>()
{{ put("foo", 1);
put("bar", 256);
put("data", 3);
put("moredata", 27);
put("hello", 32);
put("world", 65536); }};
Run Code Online (Sandbox Code Playgroud)
现在我宣布MYHASH HashTable为最终版.如果我尝试添加更多元素,它接受.
MYHASH.put("NEW DATA", 256);
Run Code Online (Sandbox Code Playgroud)
现在,"NEW DATA"被添加到HashTable中.我的问题是为什么它允许添加甚至其声明为最终????
我想阻止用户多次并行运行我的java应用程序.
为了防止这种情况,我在打开应用程序时创建了一个锁定文件,并在关闭应用程序时删除了锁定文件.
当应用程序运行时,您无法打开另一个jar实例.但是,如果通过任务管理器终止应用程序,则不会触发应用程序中的窗口关闭事件,也不会删除锁定文件.
如何确保锁定文件方法有效或我可以使用其他机制?
在我的项目中,我需要在android中创建一个服务.我可以像这样注册服务:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<service android:enabled="true"
android:name=".ServiceTemplate"/>
<activity
android:name=".SampleServiceActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
我在以下活动中调用此服务: -
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent service = new Intent(getApplicationContext(), ServiceTemplate.class);
this.startService(service);
}
Run Code Online (Sandbox Code Playgroud)
但如果我杀死当前活动,该服务也会被破坏.我需要这项服务始终在后台运行.我需要做什么?我该如何注册服务?我该如何开始服务?
这是示例xml文档.
<root>
<node> count the number of words </node>
</root>
Run Code Online (Sandbox Code Playgroud)
对于这个例子,我想计算xslt中节点""中的单词数.
输出就像是单词数量:: 5
对此有何看法?
您的(Dimitre Novatchev)代码适用于上述xml.您的代码是否适用于以下xml?
<root>
<test>
<node> pass pass </node>
</test>
<test>
<node> fail pass fail </node>
</test>
<test>
<node> pass pass fail </node>
</test>
</root>
Run Code Online (Sandbox Code Playgroud)
输出如be:节点"node"中的单词总数:8
UPDATE3 ::
此代码完全适用于上述xml doc.假设
<root>
<test>
<node> pass pass </node>
<a> value </a>
<b> value </b>
</test>
<test>
<node> fail fail </node>
<b> value </b>
</test>
<test>
<node> pass pass</node>
<a> value </a>
</test>
</root>
Run Code Online (Sandbox Code Playgroud)
但是您的代码会计算整个文档中的单词数.我想只计算节点类型"node"中的单词数.输出就像
"node"中的单词数:: 6 Total Pass :: …
我想使用XSLT来计算XML文档中特定节点中字符串出现次数.考虑这个例子
<mainNode>
<book>
<price> 100 </price>
<city> chennai </city>
<list>
<language> c java ruby </language>
</list>
</book>
<book>
<price> 200 </price>
<city> banglore </city>
<list>
<language> c java </language>
</list>
</book>
<book>
<price> 300 </price>
<city> delhi </city>
<list>
<language> java ruby </language>
</list>
</book>
</mainNode>
Run Code Online (Sandbox Code Playgroud)
在这里,我想计算"java"的出现次数
我希望输出像这样:: java - 3
这该怎么做???任何的想法???
我想在JPanel上画一个重复.能够使用以下代码绘制.
public class DrawingColor extends JFrame
{
public static void main(String[] args)
{
DrawingColor d = new DrawingColor();
}
public DrawingColor()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(new MyComponent());
setSize(400,400);
setVisible(true);
}
public class MyComponent extends JComponent
{
@Override
public void paint(Graphics g)
{
int height = 200;
int width = 120;
g.setColor(Color.red);
g.drawRect(10, 10, height, width);
g.setColor(Color.gray);
g.fillRect(11, 11, height, width);
g.setColor(Color.red);
g.drawOval(250, 20, height, width);
g.setColor(Color.magenta);
g.fillOval(249, 19, height, width);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是getContentPane().add(new MyComponent()); 我需要在框架中添加一个基本面板,而不是这个声明.在基本面板上,我想添加MyComponent面板.
JPanel basePanel = new JPanel();
basePanel …
Run Code Online (Sandbox Code Playgroud) 在我的android项目中,我使用了两个JAXB库jaxp-ri(用于XMLGregorianCalendarImpl类)和jaxb-api(用于对象到xml转换)。我已经在build.gradle文件中添加了这两个库。
但是当我构建项目时,出现以下提到的错误
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Ljavax/xml/stream/events/Namespace;
Error:com.android.dex.DexException: Multiple dex files define Ljavax/xml/stream/events/Namespace;
Error: at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
Error: at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
Error: at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
Error: at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Error: at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
Error: at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
Error: at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
Error: at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
Error: at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
Error: at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Ljavax/xml/stream/events/Namespace;
Run Code Online (Sandbox Code Playgroud)
Build.gradle文件
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.0.0-beta1'
implementation …
Run Code Online (Sandbox Code Playgroud)