我有一些格式有一些常量的代码ClassName.CONSTANT_NAME.我想快速替换它CONSTANT_NAME.但我没有找到任何有效的方法.
每次我想静态导入的东西,我必须手动删除类名,然后打开静态导入工具提示,其中可能包含常量名称的几个匹配...这是低效的.
有没有快速的方法将导入转换为静态导入?理想情况下,我会为此分配快捷方式.
假设我们有一个Customer班级:
public class Customer {
private Car[] cars;
// getter, setter, constructor
}
Run Code Online (Sandbox Code Playgroud)
和我们需要在汽车上映射的客户的集合.
目前我正在以某种方式这样做:
Collection<Customer> customers = ...
customers.stream().flatMap(
customer -> Arrays.stream(customer.getCars())
)...
Run Code Online (Sandbox Code Playgroud)
它运行良好,但代码看起来不优雅.我真的想用使用方法引用的代码替换它,这些代码通常看起来更易读,更紧凑.但是使用数组类型的字段会很难.
问题:有没有任何方法可以增强flatMap呼叫,使其更具可读性/紧凑性/清晰度?
我是注释处理和代码生成的新手。我想知道如何执行这样的操作,比如将新方法附加到现有类。这是我想要做的一个例子:
假设我们有一个带有自定义注释的类,如下所示:
class SourceClass {
@CustomAnnotation
fun annotatedFun1(vararg argument: Any) {
//Do something
}
@CustomAnnotation
fun annotatedFun2(vararg argument: Any) {
//Do something
}
fun someOtherFun() {
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
我想得到的结果 - 该类的扩展副本:
class ResultClass {
fun hasFunWithName(name: String): Boolean {
return (name in arrayOf("annotatedFun1", "annotatedFun2"))
}
fun callFunByName(name: String, vararg arguments: Any) {
when (name) {
"annotatedFun1" -> annotatedFun1(*arguments)
"annotatedFun2" -> annotatedFun2(*arguments)
}
}
fun annotatedFun1(vararg argument: Any) {
//Do something
}
fun annotatedFun2(vararg argument: Any) {
//Do something …Run Code Online (Sandbox Code Playgroud) 我有一个可滚动TextView的用户可以选择文本.我通过设置移动方法来添加滚动条ScrollingMovementMethod.
问题:除非应用程序暂停(例如,切换应用程序后),否则选择效果很好.一旦应用程序处于活动状态,选择将停止工作,并在日志中收到以下消息:
W/TextView:TextView不支持文本选择.选择取消.
我的设置:
我有一个Activity CoordinatorLayout和一个TextView包含在RelativeLayout其中的片段,如下所示:
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:scrollbars="vertical" />
Run Code Online (Sandbox Code Playgroud)
在Java代码中,我必须这样做:
textView.setMovementMethod(new ScrollingMovementMethod());
textView.setTextIsSelectable(true);
textView.setFocusable(true);
textView.setFocusableInTouchMode(true);
Run Code Online (Sandbox Code Playgroud)
编辑:
问题出在以下调用中
textView.setMovementMethod(new ScrollingMovementMethod());
Run Code Online (Sandbox Code Playgroud)
如果我删除它有效,但我无法理解.
重现问题的最小步骤:
1)TextView使用以下布局创建一个空的Activity .
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text_view"
android:text="Some very very very long text..."
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:scrollbars="vertical" />
</android.support.design.widget.CoordinatorLayout>Run Code Online (Sandbox Code Playgroud)
2)设置TextViewin onStart()方法的可见性参数.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) …Run Code Online (Sandbox Code Playgroud)我正在重新设计管道以使用声明式管道方法,以便我能够在每个阶段使用 Docker 映像。
目前我有以下工作代码,它执行连接到在 Docker 容器中运行的数据库的集成测试。
node {
// checkout, build, test stages...
stage('Integration Tests') {
docker.image('mongo:3.4').withRun(' -p 27017:27017') { c ->
sh "./gradlew integrationTest"
}
}
Run Code Online (Sandbox Code Playgroud)
现在使用声明式管道,相同的代码看起来像这样:
pipeline {
agent none
stages {
// checkout, build, test stages...
stage('Integration Test') {
agent { docker { image 'openjdk:11.0.4-jdk-stretch' } }
steps {
script {
docker.image('mongo:3.4').withRun(' -p 27017:27017') { c ->
sh "./gradlew integrationTest"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题:该阶段现在在 Docker 容器中运行docker.image(),并且运行会导致docker: …
jenkins docker jenkins-pipeline jenkins-declarative-pipeline
我有一个带有README.md文件的 GitHub 项目。我通过以下方式嵌入图像
<img src="./logo.svg" align="right" width="180px">
Run Code Online (Sandbox Code Playgroud)
这是此类图像的示例。
注意: GitHub 允许使用嵌入式 HTML 但不允许使用 CSS,这就是我使用width属性而不是 css 的原因。
这样图像就占据了屏幕的右侧,允许将文本放在左侧。
问题:如果您在智能手机上打开此类链接,则文本空间太小,并且拆分的单词或字母占据整行看起来很糟糕。如果我可以使用更大的width专门用于移动设备,那就太好了。但是 GitHub 限制在 markdown 文件中使用 CSS,我不能使用@media查询。
问题:如何在不使用 CSS 的情况下使 GitHub 的 README 在移动和桌面上看起来不同?
而java类Idea的生成单元测试添加了默认的静态导入
import static org.junit.Assert.*;
Run Code Online (Sandbox Code Playgroud)
我想通过更多导入来扩展本节,但我还没有找到配置它们的地方。
我正在使用 IntelliJ IDEA 2017.1 Ultimate
我通过设置路由配置@NgModule.我有一项服务,根据特定条件确定应该为用户显示应用程序的哪些部分.我需要调用该服务并根据返回的值设置路由.
问题:路径配置是在注释中设置的,我无法在这样的设置中获得如何调用服务.
这里更具体的是我想要增强的示例配置.
我目前的路由设置:
const appRoutes: Routes = [
{
path: '',
redirectTo: 'first-route',
pathMatch: 'full'
},
{
path: 'first-route',
component: FirstComponent,
pathMatch: 'full'
},
{
path: 'second-route',
component: SecondComponent,
pathMatch: 'full'
},
...
];
@NgModule({
imports: [RouterModule.forChild(appRoutes)],
exports: [RouterModule]
})
export class MyRoutingModule {
}
Run Code Online (Sandbox Code Playgroud)
应该更改路由设置的服务:
@Injectable()
export class MyService {
getAccessibleRoutes(): Observable<string[]> {...}
}
Run Code Online (Sandbox Code Playgroud)
问题:如何拨打服务电话并更改路线?
注意:我还查看了"动态添加Angular中的路由"和"我们如何动态地将新路由添加到RouterModule(@NgModule导入)",但我还没有找到明确的答案.
我有自定义的ExoPlayer控制栏.它需要相当大的空间,我想让它变得更窄.
这是我要删除/缩小的内容(用红色突出显示):
正如你看到的,我设法通过玩弄已经删除了一些空间paddingTop,layout_marginTop,layout_height参数(它使用的是更大).
但这还不够,还需要很大的空间.
问题:如何缩小图片上标注的空白区域?
这是我的自定义的exo_player_control_view.xml样子(为了简单起见,删除了大部分元素):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#CC000000"
android:layoutDirection="ltr"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@id/exo_play"
style="@style/ExoMediaButton.Play" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<com.google.android.exoplayer2.ui.DefaultTimeBar
android:id="@id/exo_progress"
android:layout_width="0dp"
android:layout_height="18dp"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
注意:我完全理解通过缩小这些区域可能会使控制面板不太可用.没关系.我希望至少能够改变它们并测试它是如何工作的.
我有一个具有以下结构的 Go 项目:
foo/foo.go
foo/foo_test.go
main.go
Run Code Online (Sandbox Code Playgroud)
如您所见,没有针对main.go.
我使用以下命令收集覆盖率报告:
go test ./foo ./ -coverprofile=coverage.txt -covermode=atomic
Run Code Online (Sandbox Code Playgroud)
在这里./foo并./显示在哪里寻找包裹。
问题:我将覆盖率报告发送到 codecov.io,它显示我的代码 100% 被测试覆盖。但这不是真的,因为我main.go根本没有测试。
系统似乎只计算那些明确指定测试文件的包。
问题:如何修复覆盖率报告以计算有关未测试包的信息?
注意:你可以在GitHub 上找到我的项目,真正的统计数据在这里。该项目具有不同的结构,但问题仍然存在(错误的覆盖范围)。
java ×4
android ×2
angular ×1
annotations ×1
codecov ×1
codegen ×1
controls ×1
css ×1
docker ×1
exoplayer ×1
github ×1
go ×1
go-testing ×1
html ×1
java-8 ×1
javascript ×1
jenkins ×1
jenkins-declarative-pipeline ×1
junit ×1
kapt ×1
kotlin ×1
lambda ×1
readme ×1
textview ×1
typescript ×1
url-routing ×1