当您使用抽象类来实现接口时,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)
你能解释一下原因吗?
安装了基于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
我有一个类的对象F1
和F2
我想在保留片段注入.我还有一个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
该惯例说:"非公开,非静态字段名称以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) 我试图在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
在项目的根文件.
所以有什么问题?当我 …
我正在尝试在地理坐标和地磁坐标之间进行转换。我找到了以下 Prolog 脚本,但我对它的理解不够,无法自己转换。目标语言是 Java,但任何可以理解的语言都可以(C、Python、VB 等等)。
http://idlastro.gsfc.nasa.gov/ftp/pro/astro/geo2mag.pro
如果有人可以帮助转换这个脚本或解释它到底在做什么(那些数组操作让我感到困惑),我真的很感激。
谢谢
我有一项活动.它没有标题栏.内容视图只是一个线性布局.它看起来像android在我的内容视图顶部绘制一个投影,直接在状态栏下方.有没有办法阻止被绘制?
我的布局只是:
<LinearLayout ... />
Run Code Online (Sandbox Code Playgroud)
我没有标题栏:
requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)
谢谢.
这是将字符串转换为列表的正确方法吗?
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) 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)
提前谢谢了,
我正在使用此代码.
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.
在以下代码中,
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.tan
或Math.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)