返回顶部
首页 > 资讯 > 精选 >Java中怎么实现静态导入
  • 561
分享到

Java中怎么实现静态导入

2023-06-17 13:06:23 561人浏览 独家记忆
摘要

Java中怎么实现静态导入,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。先看下面这段示例代码:public class SayHelloTe

Java中怎么实现静态导入,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

先看下面这段示例代码:

public class SayHelloTest{          @Test  public void should_say_hello_when_given_your_name(){             GotoPage("hello");            input("name","yuyijq");           click("sayButton");  assertThat(helloPage.getLabel(),is("hello yuyijq"));      }  }

这是一段典型的功能测试代码。对于功能测试来说,关键的就是要模拟用户场景,而不涉及技术细节,用领域的语言来表达出测试。上面的测试用很清晰的步骤表达出了测试的意图,要注意的是这里的gotoPage,input,click以及assertThat方法都不是SayHelloTest类的实例方法,都是定义在别的类甚至是第三方框架中的静态方法。通过Java的静态导入特性,使得现在代码的可读性更高:

import static com.cnblogs.yuyijq.functionalTest.gotoPage;

弊端

通过静态导入,我们可以去掉类名的前缀,这样就可以将代码写得更自然,更像是在描述一件事儿。但静态导入也并不是没有缺点。在软件开发中,很多特性适当的使用都很好,但是一旦使用过度就有可能变成坏事,这就是那个名言:不要拿着锤子,就把啥都当钉子。请看下面的代码:

map.get(MOST_VIEWED.toString());  map.get(LAST_VIEWED.toString());  map.get(IS_LAST_ARTICLE.toString());  map.get(IS_SHOW_PICTURE.toString());  //....下面有类似代码若干行

咋一看还以为这些MOST_VIEWED什么的全部是常量,但***发现这些都是枚举PortalOptions里的项,都是通过静态导入导进来的。但由于没了PortalOptions这个具有说明信息的枚举名作为前缀,丢失了很多信息,造成这段代码不是很容易看懂,不知道map.get出来的到底是什么。代码虽然短了很多,但是如果加上PortalOptions,那么就能很直观的直到我们需要从这个map里获得PortalOptions相关的东东。

在C#里画瓢

好的东西是要学习的,那我们如何在C#里照样画个瓢呢。可惜C#目前还不支持这种静态导入,我也没想到什么好法子能画这个瓢。在C#里不要类名或实例名这个前缀,那除非这个方法是本类的方法,但我们肯定不可能为了使用这样的东东,就给每个类添加这些方法,不过C#里有一个扩展方法特性,我们看看是不是能用扩展方法来画这个瓢:

public static class UnitTestExtensions    {  public static T mock<T>(this object o,Type mockType)      {      return (T)NMock.Mock(mockType);         }   }

由于我们是给object类扩展的方法,所以在所有的类中都可以像是自己的方法一样使用,也就可以写下下面这样的代码了:

public class SayHelloControllerTest     {         [Test]  public void should_load_user_when_given_username()          {          User user = new UserBuilder()                 .withUserName("yuyijq")                  .withAge(80)                  .withSex(male)                   .build();          UserDAO userDAO = mock(typeof(UserDAO));  when(userDAO.findByUserName("yuyijq")).thenReturn(user);      replay(userDAO);  SayHelloController controller = new SayHelloController(userDAO);        verify(userDAO);  ModelAndView mv = controller.show("yuyijq");        assertModelAttribute(mv,"user",user);        }     }

不过给object添加扩展方法实在不是一个好主意,污染太大了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: Java中怎么实现静态导入

本文链接: https://lsjlt.com/news/289634.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中怎么实现静态导入
    Java中怎么实现静态导入,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。先看下面这段示例代码:public class SayHelloTe...
    99+
    2023-06-17
  • React Native中怎么实现动态导入
    这篇文章主要介绍“React Native中怎么实现动态导入”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React Native中怎么实现动态导入”文章能帮助大家解决问题。背景...
    99+
    2023-07-02
  • Java中怎么实现静动态代理模式
    这篇文章将为大家详细讲解有关Java中怎么实现静动态代理模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.静态代理模式 使用场合:为其他对象提供一种代理以控制对这个对象的访问。在某些情况...
    99+
    2023-06-17
  • java静态类中缓存数据怎么实现
    在Java中,可以使用静态变量来实现数据的缓存。静态变量是与类关联的变量,它们在整个应用程序的生命周期内都保持不变,并且可以被所有类...
    99+
    2023-10-27
    java
  • SpringBoot详细讲解静态资源导入的实现
    目录SpringBootWeb开发1. 静态资源导入webjars使用自己的静态资源总结2.制作特殊的首页图标转变Thymeleaf模板引擎引入Thymeleaf取值有无转义循环Sp...
    99+
    2024-04-02
  • PHP中怎么实现伪静态
    这期内容当中小编将会给大家带来有关PHP中怎么实现伪静态,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码:<php //伪静态方法一   // l...
    99+
    2023-06-17
  • java中怎么实现动态载入
    java中怎么实现动态载入,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java动态载入class的两种方式:implicit隐式,即利用实例化才载入的特性来java动态载...
    99+
    2023-06-17
  • 静态导入机制如何在java项目中使用
    这篇文章给大家介绍静态导入机制如何在java项目中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。java中静态导入机制用法实例详解静态常量类在java开发中,我们会经常用到一些静态常量用于状态判断等操作。为了能够在...
    99+
    2023-05-31
    java 静态导入机制 ava
  • java怎么实现导入导出功能
    在Java中,可以使用以下两种方式来实现导入和导出功能:1. 使用文件输入输出流:可以使用FileInputStream和FileO...
    99+
    2023-10-08
    java
  • 静态工厂方法怎么在Java项目中实现
    今天就跟大家聊聊有关静态工厂方法怎么在Java项目中实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是静态工厂方法对于类而言,为了让使用者获取它自身的一个实例,最常用的方法就是...
    99+
    2023-05-31
    java ava 目中
  • 怎么在JAVA项目中实现一个静态单例
    怎么在JAVA项目中实现一个静态单例?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JAVA  静态的单例的实例详解实现代码:public c...
    99+
    2023-05-31
    java 单例 ava
  • java接口中静态方法的继承怎么实现
    这篇文章主要讲解了“java接口中静态方法的继承怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java接口中静态方法的继承怎么实现”吧!1、格式public static返...
    99+
    2023-06-30
  • 怎么在Java项目中实现一个动态与静态绑定
    本篇文章为大家展示了怎么在Java项目中实现一个动态与静态绑定,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的动态绑定所谓的动态绑定就是指程执行期间(而不是在编译期间)判断所引用对象的实际类...
    99+
    2023-05-31
    java 动态绑定 静态绑定
  • Java中的静态字段和静态方法怎么用
    这篇文章主要介绍了Java中的静态字段和静态方法怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先看看下面这一串代码:public class Mai...
    99+
    2023-06-29
  • Nginx中怎么实现AWStats静态页面
    这期内容当中小编将会给大家带来有关Nginx中怎么实现AWStats静态页面,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 下载***版的AWStats,基本就是Pe...
    99+
    2024-04-02
  • Java怎么实现Excel导入导出操作
    今天小编给大家分享一下Java怎么实现Excel导入导出操作的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 功能测试1....
    99+
    2023-06-29
  • 使用Java怎么实现静态代理和动态代理
    本篇文章为大家展示了使用Java怎么实现静态代理和动态代理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。代理模式代理模式(Proxy):为其他对象提供一个代理以控制对这个对象的访问。主要解决:在直接...
    99+
    2023-06-14
  • Java怎么实现多线程中的静态代理模式
    这篇文章将为大家详细讲解有关Java怎么实现多线程中的静态代理模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样...
    99+
    2023-06-15
  • 静态成员怎么利用import方法进行导入
    这篇文章给大家介绍静态成员怎么利用import方法进行导入,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。        import 关键字除了导入...
    99+
    2023-05-31
    import
  • java静态和非静态方法怎么调用
    在Java中,静态方法和非静态方法的调用方式有所不同。 静态方法调用: 静态方法可以直接通过类名来调用,不需要创建类的实例。例如:...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作