标签: static-import

"导入"后的"静态"修饰符是什么意思?

当像这样使用时:

import static com.showboy.Myclass;

public class Anotherclass{}
Run Code Online (Sandbox Code Playgroud)

import static com.showboy.Myclass和之间有什么区别import com.showboy.Myclass

java modifier static-import

427
推荐指数
6
解决办法
14万
查看次数

静态导入方法的好用例是什么?

刚收到评论评论我静态导入该方法并不是一个好主意.静态导入是来自DA类的方法,该类主要使用静态方法.因此,在业务逻辑的中间,我有一个似乎属于当前类的da活动:

import static some.package.DA.*;
class BusinessObject {
  void someMethod() {
    ....
    save(this);
  }
} 
Run Code Online (Sandbox Code Playgroud)

审稿人并不热衷于我改变代码而我没有,但我确实同意他.给出非静态导入的一个原因是,在定义方法的地方很混乱,它不在当前类中而不在任何超类中,所以它也有一段时间来识别它的定义(基于Web的审查系统没有可点击的IDE之类的链接:-)我真的不认为这很重要,静态导入仍然很新,我们很快就会习惯定位它们.

但另一个原因,我同意的是,一个不合格的方法调用似乎属于当前对象,不应该跳转上下文.但如果确实属于它,那么扩展超级类是有意义的.

所以,当是有意义的静态导入的方法呢?你什么时候做的?您是否喜欢不合格电话的样子?

编辑:流行的观点似乎是静态导入方法,如果没有人会把它们混淆为当前类的方法.例如,java.lang.Math和java.awt.Color中的方法.但是如果abs和getAlpha不模糊,我不明白为什么readEmployee是.在许多编程选择中,我认为这也是个人偏好的事情.

感谢您的回复,我正在结束这个问题.

java static-import

127
推荐指数
7
解决办法
8万
查看次数

查找Mockito构造的导入静态语句

我试图穿过我和Mockito之间的砖墙.为了获得Mockito东西的正确导入静态语句,我已经把头发撕掉了.你认为有人会抛出一张桌子,说anyInt()来自org.mockito.Matchers,when()来自org.mockito.Mockito等,但这对新手来说太有帮助了,不是吗?

这种事情,特别是当与无数更多以星号结尾的import语句混合在一起时,并不总是非常有用:

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
Run Code Online (Sandbox Code Playgroud)

是的,我知道并且一直在尝试使用Eclipse Window - > Preferences-> Java - > Editor-> Content Assist - > Favorites机制.它有所帮助,但它并没有击中头部.

任何对这个问题的答案都将不胜感激.

非常感谢,Russ

java static-import mockito

70
推荐指数
3
解决办法
9万
查看次数

c#中的静态导入

C#是否具有Java的静态导入功能?

所以不要像编写代码那样代码

FileHelper.ExtractSimpleFileName(file)
Run Code Online (Sandbox Code Playgroud)

我可以写

ExtractSimpleFileName(file)
Run Code Online (Sandbox Code Playgroud)

和编译器会知道我的意思是来自FileHelper的方法.

.net c# java static-import

50
推荐指数
4
解决办法
1万
查看次数

为什么静态导入具有相同名称的静态方法合法?

让我们说我们有这些包和类:

package p1;

public class A1 {
    public static void a() {}
}

package p2;

public class A1 {
    public static void a() {}
}

package p3;

import static p1.A1.a;
import static p2.A1.a;

public class A1 {
    public static void test() {

    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道,为什么静态导入方法是合法的(不会导致编译时错误)在包中p3?我们将无法在test()方法中进一步使用它们,因为这样的使用将导致编译时错误.

为什么它与正常导入类不一样.让我们说我们想A1从包中导入类p1p2进入p3:

package p3;
import p1.A1;
import p2.A1;
Run Code Online (Sandbox Code Playgroud)

这种导入是非法的,会导致编译时错误.

java import static-import

28
推荐指数
1
解决办法
4653
查看次数

Java静态导入

通过实验,我发现即使在静态上下文中,Java非静态方法也会覆盖范围内所有相同的命名方法.即使不允许参数重载.喜欢

import java.util.Arrays;    
import static java.util.Arrays.toString;

public class A {
    public static void bar(Object... args) {
        Arrays.toString(args);
        toString(args);     //toString() in java.lang.Object cannot be applied to (java.lang.Object[])
    }
}
Run Code Online (Sandbox Code Playgroud)

我在规范中找不到任何相关内容.这是一个错误吗?如果不是,有没有理由实施这样的语言?

UPD:Java 6不编译此示例.问题是 - 为什么?

java scope overloading language-design static-import

26
推荐指数
1
解决办法
3371
查看次数

使用静态导入优于导入是否有任何优势?

考虑以下课程

public final class Constant {
  public static final String USER_NAME="user1";
  //more constant here
}
Run Code Online (Sandbox Code Playgroud)

这个类在包B中.

现在我将在包A中使用它.考虑以下两种可以使用的方法.

方法1-使用 import B.Constant

import B.Constant;

public class ValidateUser {
public static void main(String[] args) {
   if(Constant.USER_NAME.equals("user1")){

   }
  }
 }
Run Code Online (Sandbox Code Playgroud)

方法2-使用 import static B.Constant.USER_NAME;

import static B.Constant.USER_NAME;

public class ValidateUser {
public static void main(String[] args) {
   if(USER_NAME.equals("user1")){

   }
 }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在这种情况下,静态导入是否有任何差异或优势?

java import static-import

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

静态导入仅来自类和接口

我的代码在Eclipse中编译得很好,但是当我尝试从命令行编译时(通过我们基于ruby的构建器系统),我收到以下错误消息:

static import only from classes and interfaces
Run Code Online (Sandbox Code Playgroud)

建议不允许静态导入公共静态字段.我应该寻找什么来帮助诊断这个问题?我该如何解决?

更新: per @Ted的请求,引用文件中的常量声明:

public static final String NULL = "<NULL>";
Run Code Online (Sandbox Code Playgroud)

和引用文件中的(bowdlerized)引用:

import static my.path.MyClass.NULL;
Run Code Online (Sandbox Code Playgroud)

java static-import

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

如何在Android Studio中停止静态导入方法/常量的亮点?

我在Android Studio中使用静态导入:

import static android.opengl.GLES20.*;
Run Code Online (Sandbox Code Playgroud)

但android studio强调了与代码中静态导入相关的每个静态成员/常量.


我也试图寻找一个选项,Settings > Editor > Color & Fonts > Java但没有发现改变颜色.

java static-import android-studio android-studio-import

17
推荐指数
1
解决办法
1058
查看次数

导入静态方法

如何从另一个c#源文件导入静态方法并在没有"点"的情况下使用它?

喜欢 :

foo.cs

namespace foo
{
    public static class bar
    {
        public static void foobar()
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Program.cs中

using foo.bar.foobar; <= can't!

namespace Program
{
    class Program
    {
        static void Main(string[] args)
        {
             foobar();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不能只是foobar();,但如果我写using foo;在顶部并foobar()尽可能地打电话foo.bar.foobar(),尽管很冗长.对此有任何解决方法吗?

c# static-import

16
推荐指数
2
解决办法
8709
查看次数