小编Sat*_*ish的帖子

在Java中创建Hashtable作为final

我们知道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 hashtable

37
推荐指数
5
解决办法
3万
查看次数

防止启动Java应用程序的多个实例

我想阻止用户多次并行运行我的java应用程序.

为了防止这种情况,我在打开应用程序时创建了一个锁定文件,并在关闭应用程序时删除了锁定文件.

当应用程序运行时,您无法打开另一个jar实例.但是,如果通过任务管理器终止应用程序,则不会触发应用程序中的窗口关闭事件,也不会删除锁定文件.

如何确保锁定文件方法有效或我可以使用其他机制?

java runtime executable-jar

21
推荐指数
4
解决办法
2万
查看次数

在Android中创建后台服务

在我的项目中,我需要在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)

但如果我杀死当前活动,该服务也会被破坏.我需要这项服务始终在后台运行.我需要做什么?我该如何注册服务?我该如何开始服务?

service android

13
推荐指数
3
解决办法
4万
查看次数

使用xsl计算xml节点中的单词数

这是示例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 :: …

xml xslt

6
推荐指数
1
解决办法
6790
查看次数

使用XSLT计算XML中字符串的出现次数

我想使用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

这该怎么做???任何的想法???

xml xslt count

5
推荐指数
1
解决办法
2万
查看次数

在JPanel上绘制矩形

我想在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)

java swing paint jpanel

5
推荐指数
2
解决办法
3万
查看次数

DexException在Android中定义了多个dex文件

在我的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)

android jaxb dex android-studio android-multidex

3
推荐指数
1
解决办法
1998
查看次数