小编Giu*_*lli的帖子

为什么实现接口的抽象类可能会错过接口方法之一的声明/实现?

当您使用抽象类来实现接口时,Java中会发生奇怪的事情:某些接口的方法可能完全丢失(即既不存在抽象声明也不存在实际实现),但编译器不会抱怨.

例如,给定接口:

public interface IAnything {
  void m1();
  void m2();
  void m3();
}
Run Code Online (Sandbox Code Playgroud)

以下抽象类在没有警告或错误的情况下快速编译:

public abstract class AbstractThing implements IAnything {
  public void m1() {}
  public void m3() {}
}
Run Code Online (Sandbox Code Playgroud)

你能解释一下原因吗?

java abstract-class interface

119
推荐指数
4
解决办法
12万
查看次数

如何从STS和Gradle开始

安装了基于Kepler的STS 3.4.0.RELEASE(当前最新版本)和Dashboard Extensions中的Gradle Support软件包.现在我想从头创建一个Spring MVC项目,它使用Gradle作为构建和依赖管理工具而不是Maven.

我首先创建一个带有Spring MVC项目模板的Spring项目,但显然这是基于Maven的,并且在任何向导屏幕中都没有选项可以将项目切换到Gradle.因此,在创建之后,我右键单击该项目并选择Configure> Convert to Gradle Project.然而,与我的期望相反,该项目仍然保持其Maven性质,项目中的依赖项仍然属于Maven,尽管Gradle启用了依赖项解析,pom.xml文件仍然存在,并且没有任何build.gradle文件可供查看.Eclipse的控制台报告了一个成功的构建,我认为它来自Gradle:但基于什么?当我打开Gradle Tasks视图时,它是空的; 如果我尝试刷新它,则会在触发另一次成功构建之前显示一条消息,表明该模型尚未可用.然后,当我尝试从项目中删除Maven性质时,错误开始出现,关于不再找到的类和标记库描述符.我从项目的上下文菜单中选择Gradle> Refresh Dependencies,但它没有任何效果.

我尝试相反的方法:从头开始创建一个Gradle项目.遗憾的是,Gradle模板根本不涉及Spring项目,之后添加Spring属性没有实际效果,也无法找到将Spring MVC项目模板应用于这个新创建的Gradle项目的方法.

在互联网上,每个人都在谈论Gradle Eclipse插件的导入功能有多强大,以及如何在IDE外部创建Gradle项目,然后为Eclipse创建必要的文件以便能够导入项目,最后导入它并能够使用IDE进行开发.这些教程中使用的示例项目不是Spring MVC项目,因此我将独立创建目录层次结构并进一步配置.

所以我想知道:就像在STS中创建一个带有Gradle的Spring MVC项目这样的事情甚至可能吗?鉴于STS,Spring和Eclipse Gradle插件是由同一个供应商开发的,你会打赌它是,因为它似乎是一个基本特性,即使是第一个版本的STS/Spring/Gradle集成也几乎不会丢失工具.那么,在尝试实现目标时,我是否想念一些东西?并且,为了防止这种情况发生,还有其他方法可以在STS中创建基于Gradle的Spring MVC项目吗?或者只是将基于Maven的一个正确转换为Gradle?

eclipse spring gradle sts-springsourcetoolsuite gradle-eclipse

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

Android上的Dagger 2:在Activity中注入相同的依赖项并保留Fragment

我有一个类的对象F1F2我想在保留片段注入.我还有一个A依赖于Activity 的类对象,我希望它被注入到该Activity中,并且保留在与Activity的Fragment Manager相连的Fragment中.我写下面的代码.首先,Activity依赖的模块:

@Module
public class MainActivityModule {
    private Activity mActivity;

    public MainActivityModule(Activity activity) {
        mActivity = activity;
    }

    @Provides
    @ActivityScope
    public A provideA() {
        return new A(mActivity);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,相应的组件必须使A对象可用于其依赖组件:

@ActivityScope
@Component(modules = {MainActivityModule.class})
public interface MainActivityComponent {
    void inject(MainActivity activity);

    // make the A object available to dependent components
    A getA();
}
Run Code Online (Sandbox Code Playgroud)

我还写了与Fragment相关的模块:

@Module
public class FragmentModule {
    @Provides
    @FragmentScope
    public F1 provideF1() {
        return new F1();
    }

    @Provides
    @FragmentScope …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection android-fragments dagger dagger-2

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

哪个字段名称前缀'm'?

该惯例说:"非公开,非静态字段名称以m开头.其他字段以小写字母开头".它是仅引用类字段(如示例1中)还是引用所有字段(如示例2中所示)?

例1

public class One {
   private int mFieldOne;
   private int mFieldTwo;

   public void someMethod(){
      int methodFieldOne;
      int methodFieldTwo;
   }
}
Run Code Online (Sandbox Code Playgroud)

例2

public class Two {
   private int mFieldOne;
   private int mFieldTwo;

   public void someMethod(){
      int mMethodFieldOne; //see m here
      int mMethodFieldTwo; //see m here
   }
} 
Run Code Online (Sandbox Code Playgroud)

java naming-conventions

11
推荐指数
1
解决办法
4107
查看次数

如何在Bitbucket上发布Android库作为Maven工件?

我试图在Bitbucket存储库上发布一个Android库作为Maven工件,从这篇文章开始,这篇文章是在不久前的Android Weekly时事通讯中发布的.本文介绍如何执行发布以及如何链接来自其他Android项目的已发布工件.但是,我甚至没有设法使出版部分正确地工作.

目前,这是build.gradle属于库项目的文件的相关内容:

apply plugin: 'maven'

allprojects {
    repositories {
        jcenter()
        maven {
            url "https://raw.github.com/synergian/wagon-git/releases"
        }
    }
}

configurations {
    deployerJar
}

dependencies {
    deployerJar 'ar.com.synergian:wagon-git:0.2.5'
}
Run Code Online (Sandbox Code Playgroud)

build.gradle项目中库模块文件的相关部分如下:

apply plugin: 'maven'

uploadArchives {
    configuration = rootProject.configurations.archives
    repositories {
        configuration = rootProject.configurations.deployerJar
        mavenDeployer {
            pom.groupId = 'com.example'
            pom.artifactId = 'example-library'
            pom.version = '1.0.0'
            repository(url: "${bitbucketUrl}") {
                authentication(userName: bitbucketUsername, password: bitbucketPassword)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在那里bitbucketUrl,bitbucketUsername并且bitbucketPassword都包含在在gradle.properties在项目的根文件.

所以有什么问题?当我 …

android gradle maven

7
推荐指数
2
解决办法
4073
查看次数

从地理坐标到地磁坐标的转换

我正在尝试在地理坐标和地磁坐标之间进行转换。我找到了以下 Prolog 脚本,但我对它的理解不够,无法自己转换。目标语言是 Java,但任何可以理解的语言都可以(C、Python、VB 等等)。

http://idlastro.gsfc.nasa.gov/ftp/pro/astro/geo2mag.pro

如果有人可以帮助转换这个脚本或解释它到底在做什么(那些数组操作让我感到困惑),我真的很感激。

谢谢

java coordinates

5
推荐指数
2
解决办法
3420
查看次数

删除活动布局顶部的默认投影?

我有一项活动.它没有标题栏.内容视图只是一个线性布局.它看起来像android在我的内容视图顶部绘制一个投影,直接在状态栏下方.有没有办法阻止被绘制?

我的布局只是:

<LinearLayout ... />
Run Code Online (Sandbox Code Playgroud)

我没有标题栏:

requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

谢谢.

android

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

Java - 将字符串转换为List

这是将字符串转换为列表的正确方法吗?

List styles = (List)request.getParameter("styles");

    Model (BeerExpert.java)

package com.example.model;
import java.util.*;

public class BeerExpert {
    public List getBrands(String color){
        List brands = new ArrayList();
        if(color.equals("amber")){
            brands.add("Jack Amber");
            brands.add("Red Moose");
        }
        else{
            brands.add("Jail Pale Ale");
            brands.add("Gout Scott");
        }
        return brands;
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来是servlet类

BeerSelect.java

package com.example.web;

import com.example.model.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class BeerSelect extends HttpServlet {
    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
                        throws IOException,ServletException{
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        out.println("Beer Selection Advice <br>");
        String c …
Run Code Online (Sandbox Code Playgroud)

java jsp servlets

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

go/0未定义的过程保存/ 1

swi-prolog 5.10.2

我已经输入了这个prolog程序.但是,当我运行选项a时,我得到以下错误.

go/0 Undefined Procedure save/1
Run Code Online (Sandbox Code Playgroud)

我确信save是一个正确的关键字谓词,并且该文件的路径也存在.不知道我在哪里错了.

What does the /0 /1 mean in go and save?
Run Code Online (Sandbox Code Playgroud)

源代码

/* Shopping list */

go:-reconsult('~/projects/prolog/chap7/shopping.pl'),
    write('a: See list'), nl,
    write('b: Add to list'), nl,
    write('c: Delete from list'), nl,
    read(Choice),
    choice(Choice),
    save('~/projects/prolog/chap7/shopping.pl').

/*
  facts for shopping
*/
item(potatoes).
item(bread).
item(coffee).

/*
  Rules for shopping list
*/
choice(a):-listing(item), nl.
choice(b):-write('Enter an item: '),
        read(Item),
        assert(item(Item)).
choice(c):-write('Item to delete: '),
        read(Item),
        retract(item(Item)).
choice(_):-write('Incorrect entry.'), nl.
Run Code Online (Sandbox Code Playgroud)

提前谢谢了,

prolog swi-prolog

2
推荐指数
1
解决办法
1361
查看次数

如何在android中逐行阅读?

我正在使用此代码.

try{
          // Open the file that is the first 
          // command line parameter
          FileInputStream fstream = new FileInputStream("config.txt");
          // Get the object of DataInputStream
          DataInputStream in = new DataInputStream(fstream);
          BufferedReader br = new BufferedReader(new InputStreamReader(in));
          while ((br.readLine()) != null) {
              temp1 = br.readLine();
              temp2 = br.readLine();

          }

          in.close();
    }catch (Exception e){//Catch exception if any
    Toast.makeText(getBaseContext(), "Exception", Toast.LENGTH_LONG).show();
    }
    Toast.makeText(getBaseContext(), temp1+temp2, Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

但是这显示异常并且没有更新temp1和temp2.

java android file-handling

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

math arctan在android项目中不起作用

在以下代码中,

float i = Float.parseFloat(a);
float j = Float.parseFloat(b);
double div = (double)j/i;  
float theta = (float) Math.atan(Math.toRadians(div));
Run Code Online (Sandbox Code Playgroud)

theta获得错误的价值.到目前为止,我可以看到,它总是计算Math.tan(我也尝试了这个,它给了我相同的结果).所以,即使我写Math.tanMath.atan,我得到相同的结果.

谁能帮我?

具体例子:

i,j----> theta I get:

3,4-----> 0.023 while the correct one is arctan(4/3)=53.13 not tan(4/3)=0.023
3,6-----> 0.052 while the correct one is arctan(9/3)=71.56 not tan(9/3)=0.052
Run Code Online (Sandbox Code Playgroud)

java math

0
推荐指数
1
解决办法
3506
查看次数