自动将通配符导入重构为 IntelliJ 中的显式导入(用于 Scala/Java)

Posted

技术标签:

【中文标题】自动将通配符导入重构为 IntelliJ 中的显式导入(用于 Scala/Java)【英文标题】:Automatically refactor wildcard imports into explicit imports in IntelliJ (for Scala/Java) 【发布时间】:2017-08-05 01:03:45 【问题描述】:

考虑下面的代码。

是否可以让 InteliJ 自动将每个通配符导入重构为显式导入(无论在作用域中使用什么)?

比如import scalatags.JsDom.all._变成import scalatags.JsDom.all.ol,li,div

我的搜索表明这是不可能的,但也许我错了?

This 是一个相关但不同的问题。

package app.client

import app.client.components.RootReactComp
import app.client.pages.spatutorial.components.GlobalStyles
import japgolly.scalajs.react.ReactDOM
import org.scalajs.dom
import org.scalajs.dom.raw.Element

import scala.scalajs.js
import scala.scalajs.js.annotation.JSExport
import scalacss.Defaults._
import scalatags.JsDom.all._
import scalatags.JsDom.implicits._
import scalatags.JsDom.svgAttrs.fill, height, points, stroke, width,strokeWidth
import scalatags.JsDom.svgTags._
@JSExport("Main")
  object Main extends js.JSApp 
@JSExport
         def main(): Unit = 
    //    log.warn("Application starting")
    //    // send log messages also to the server
    //    log.enableServerLogging("/logging")
    //    log.info("This message goes to server as well")

    // create stylesheet
    GlobalStyles.addToDocument()
    // tell React to render the router in the document body
    //ReactDOM.render(router(), dom.document.getElementById("root"))
    ReactDOM.render(RootReactComp.themedView(), dom.document.getElementById("joco"))
    val el: Element =dom.document.getElementById("svg-example")
     val l=     div( ol(
       li("Ordered List Item 1"),
       li("Ordered List Item 2"),
       li("Ordered List Item 3")
     )).render
  val s=    svg(height := "800", width := "500")(
                polyline(
                    points := "20,20 40,25 60,40 80,120 120,140 200,180",
                    fill := "none",
                    stroke := "black",
                    strokeWidth := "3"
                  )
           )
    el.appendChild(l);
  

【问题讨论】:

【参考方案1】:

打开对话框

Preferences > Editor > Code Style > Scala

选择标签Imports

在“Class count to use import with _”字段中,输入一个高得离谱的数字,例如5000。

从现在开始,“优化导入”命令会将通配符解析为单个导入。

您可能还想激活

Editor > General > Auto Import > Scala > Optimize Imports on the Fly

【讨论】:

谢谢,这是我尝试的第一件事,但没有成功。对你起作用吗 ?我在Mac上,也许有一些不同。版本 2016.3.4,结果:snag.gy/Ca8jXK.jpg,设置:snag.gy/WSNolB.jpg @jhegedus - 起初它对我不起作用 - 直到我意识到在某些时候重新安装 intelliJ 已将“使用带 * 导入的类计数”设置重新设置为默认为 5。将其更改为“9999”然后使 ctrl-alt-O 工作。【参考方案2】:

这是对我有用的解决方案 - 但不是最理想的:

    优化导入 转到任何导入 .* 并按 alt-enter(将出现一个菜单问题,用单个导入替换 * 导入)然后再次按 enter。

【讨论】:

以上是关于自动将通配符导入重构为 IntelliJ 中的显式导入(用于 Scala/Java)的主要内容,如果未能解决你的问题,请参考以下文章

什么是Selenium Webdriver中的显式等待与隐式等待?

将方法重构为接口的一部分

需要专业建议,关于非角度应用的量角器中的显式等待

C++17 中的显式默认构造函数

OpenGL着色器的显式与自动属性位置绑定

g ++中的显式模板专业化导致麻烦