• <bdo id='dQvUM'></bdo><ul id='dQvUM'></ul>

  • <i id='dQvUM'><tr id='dQvUM'><dt id='dQvUM'><q id='dQvUM'><span id='dQvUM'><b id='dQvUM'><form id='dQvUM'><ins id='dQvUM'></ins><ul id='dQvUM'></ul><sub id='dQvUM'></sub></form><legend id='dQvUM'></legend><bdo id='dQvUM'><pre id='dQvUM'><center id='dQvUM'></center></pre></bdo></b><th id='dQvUM'></th></span></q></dt></tr></i><div id='dQvUM'><tfoot id='dQvUM'></tfoot><dl id='dQvUM'><fieldset id='dQvUM'></fieldset></dl></div>
    <legend id='dQvUM'><style id='dQvUM'><dir id='dQvUM'><q id='dQvUM'></q></dir></style></legend>
  • <small id='dQvUM'></small><noframes id='dQvUM'>

  • <tfoot id='dQvUM'></tfoot>

        从实例方法写入静态字段

        时间:2024-05-09
            <tbody id='JPb4n'></tbody>

            <bdo id='JPb4n'></bdo><ul id='JPb4n'></ul>

            <small id='JPb4n'></small><noframes id='JPb4n'>

            • <tfoot id='JPb4n'></tfoot>

              1. <i id='JPb4n'><tr id='JPb4n'><dt id='JPb4n'><q id='JPb4n'><span id='JPb4n'><b id='JPb4n'><form id='JPb4n'><ins id='JPb4n'></ins><ul id='JPb4n'></ul><sub id='JPb4n'></sub></form><legend id='JPb4n'></legend><bdo id='JPb4n'><pre id='JPb4n'><center id='JPb4n'></center></pre></bdo></b><th id='JPb4n'></th></span></q></dt></tr></i><div id='JPb4n'><tfoot id='JPb4n'></tfoot><dl id='JPb4n'><fieldset id='JPb4n'></fieldset></dl></div>

                1. <legend id='JPb4n'><style id='JPb4n'><dir id='JPb4n'><q id='JPb4n'></q></dir></style></legend>
                  本文介绍了从实例方法写入静态字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我的代码如下.我看到了

                  I have my code as below. I see

                  public MyClass{
                  
                      private static DataSource dataSource = null;
                  
                      private static DataSource getDataSource(){
                          if (dataSource == null) {
                              try {
                                  dataSource = // something.
                              } catch (Exception e) {
                                  // some exception.
                              }
                          }
                  
                          return dataSource;
                      }
                  
                      public List doSomething(){
                  
                          // ...
                  
                          if(dataSource == null){
                              dataSource = getDataSource();
                          }
                  
                          dataSource.getConnection();
                          // ...
                  
                      }
                  }
                  

                  我在声纳分析中看到以下消息.

                  I see following message in sonar anaylsis.

                  Dodgy - Write to static field from instance method
                  
                  This instance method writes to a static field. This is tricky to get correct if multiple instances are being manipulated, and generally bad practice.
                  findbugs:ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD Sep12 Reliability > Architecture
                  

                  我看到在这个实现中一切都很好,除了我们正在更改 doSomething 方法中的静态变量.我们如何解决这个问题?

                  I see everything is okay in this implementation except that we are changing the static variable in doSomething method. How do we fix this ?

                  推荐答案

                  不确定你的静态分析工具是如何工作的,但是 -

                  Not sure how your static analysis tool works but -

                  尝试通过静态设置器写入您的值:

                  try writing to your value via a static setter:

                  private synchronized static void setDataSource(DataSource ds) {
                      dataSource = ds;
                  }
                  

                  这样你就可以了

                     if(dataSource == null){
                          setDataSource(getDataSource());
                     }
                  

                  这篇关于从实例方法写入静态字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:无法访问您的 SonarQube 服务器之一.请检查您的连接设置 下一篇:SonarQube 不显示通过 Gradle 完全覆盖的类的每个文件的详细报告

                  相关文章

                  • <bdo id='Jarj8'></bdo><ul id='Jarj8'></ul>
                    <i id='Jarj8'><tr id='Jarj8'><dt id='Jarj8'><q id='Jarj8'><span id='Jarj8'><b id='Jarj8'><form id='Jarj8'><ins id='Jarj8'></ins><ul id='Jarj8'></ul><sub id='Jarj8'></sub></form><legend id='Jarj8'></legend><bdo id='Jarj8'><pre id='Jarj8'><center id='Jarj8'></center></pre></bdo></b><th id='Jarj8'></th></span></q></dt></tr></i><div id='Jarj8'><tfoot id='Jarj8'></tfoot><dl id='Jarj8'><fieldset id='Jarj8'></fieldset></dl></div>

                    1. <small id='Jarj8'></small><noframes id='Jarj8'>

                      <legend id='Jarj8'><style id='Jarj8'><dir id='Jarj8'><q id='Jarj8'></q></dir></style></legend>

                      <tfoot id='Jarj8'></tfoot>