当我编写代码时,我有这种奇怪的习惯,用代码抛出这样的异常就可以启动我的方法
public WhateverType MethodName(CrazyObjectType crazyObject, string para2){
if(crazyObject == null){
throw new ArgumentNullException("crazyObject");
}
if(param2 == null){
throw new ArgumentNullException("param2");
}
if(para2.Lenght > 32){
throw new ArgumentOutOfBoundsException("para2");
}
...
}
Run Code Online (Sandbox Code Playgroud)
考虑一些方法有6个参数,其中不允许为null,其中一些是可能不为空或长于某个值的字符串.你可以想象,在我得到实际的方法逻辑之前,我写了很多代码+我的类将更难阅读.
是否有任何工具/ VS插件/ Resharper插件/注释/代码片段,以便我不必编写所有这些重复的代码?
理想的解决方案是一些声明性注释,例如:
[NotNull("crazyObject, param2")] [StringLenght("para2", 0, 32)]
public WhateverType MethodName(CrazyObjectType crazyObject, string para2){
...
}
Run Code Online (Sandbox Code Playgroud)
而且我的理想图像更进一步,我想我可以使用GUI来自动化进程,以便我选择方法点击某处,检查一些不应该为null的参数的复选框,并为我生成注释.
这样的事情存在吗?
注意:我想我总是可以创建代码片段来生成代码,但声明性方法和GUI生成器会更好.
编辑:说"考虑一些方法有6个参数"只是一个例子 - 我不认为我有很多这样的方法.相反,我应该写"考虑你有很多方法可以投入3-4 ArgumentException秒".
编辑2:不好的术语.我意识到我在这个问题中到处称之为"注释",如果我从.NET类中正确地记住它,我的注释应该可能在.NET中被称为"属性".
我在IOS中使用Annotations来显示伦敦地铁站,但我正在看数字,有280左右.这是最简单的方法吗?单独还是有其他选择?
欢呼所有的建议
大卫
我发现了一个奇怪的注释:
public static @interface WebResult { }
Run Code Online (Sandbox Code Playgroud)
为什么static?他们是如何编译的?我的IDE不允许这样的修改器!
包含的类是javax.jws.WebResult.
我正在运行播放应用程序.
我有
import org.junit.Before;
public class Frontpage extends Controller {
@Before
private static void commonData() {
Map cacheMap = Cache.get("login_det",Map.class);
System.out.println("commonData");
if(cacheMap!=null)
{
renderArgs.put("login_det", cacheMap);
System.out.println("renderArgs"+renderArgs.toString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是commonData永远不会在我的控制台中打印出来.我如何检查@Before是否有效
我知道hibernate是JPA的一个实现,也有自己的特性.我正在尝试使用带有注释的hibernate,但我发现我必须在包"javax.persistence.*"下使用一些注释,例如:Column,OneToMany,ManyToOne等等.
我不想使用JPA,但是在"org.hibernate.annotations"包下找不到像OneToMany这样的注释.那么,jpa annatations是hibernate的一部分吗?如果我想在jpa中使用hibernate,我必须使用一些"javax.persistence.*"注释?
我试图在我的JavaBean中自动化getter和setter方法.
因为,为Beans @ Naming Convention描述了方法和字段命名约定,所以必须有一种方法来使用这些约定来避免样板代码,例如为每个bean编写getter和setter方法.我发现了一个这样的方式在这里.
我在我的Windows机器上使用带有Java SE 6的Eclipse Helios IDE.虽然Eclipse提供了一种生成getter和setter方法而无需显式编写它们的方法,但使用注释会使代码更加清晰和可读.
但是,当我在Eclipse中编写以下代码时,我得到以下错误@Compile-time:
private @Getter @Setter int price;
Run Code Online (Sandbox Code Playgroud)
错误:
Getter无法解析为某种类型.
Setter无法解析为某种类型.
我该如何解决?
我使用Hibernate 3.6.8.这是我的表格:
CREATE TABLE UTILIZATION (
ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY
...
FK_WORKCATEGORY SMALLINT,
CONSTRAINT PK_UTILIZATION PRIMARY KEY ( ID));
CREATE TABLE DB2ADMIN.WORKCATEGORY(
ID SMALLINT NOT NULL,
DESCRIPTION VARCHAR(50),
CONSTRAINT PK_WORKCATEGORY PRIMARY KEY(ID));
ALTER TABLE UTILIZATION ADD FOREIGN KEY (FK_WORKCATEGORY) REFERENCES WORKCATEGORY(ID);
Run Code Online (Sandbox Code Playgroud)
我的Pojos:
@Entity
@Proxy(proxyClass=IWorkCategory.class)
@Table(name="WORKCATEGORY")
public class WorkCategory extends BoBase implements Serializable, IWorkCategory{
@Id
private Integer Id;
private String description;
@Override
public Serializable getId() {
return Id;
}
@Override
public void setId(Serializable id) {
Id …Run Code Online (Sandbox Code Playgroud) 我在pom.xml中为不同的配置文件定义了一堆属性.我想使用@value注释来注入属性值.只需在构建时获取值即可.
我对这个@value注释有什么样的选择?我是否必须拥有单独的属性文件,还是可以使用applicationContext.xml?
我使用AutoBean将数据编码/解码为JSON,这在以前的GWT版本中都可以.在我看来,AutoBean是处理JSON的非常好用且方便的工具.自GWT ver.2.4.0以来,这个功能已经改变,我花了一些时间在我的代码中恢复它.但只有一个部分仍未固定 - 注释@PropertyName.此注释用于向属性添加"别名".它节省了大量的网络流量.现在它引发了一个例外.代码示例如下:
import com.google.web.bindery.autobean.shared.AutoBean.PropertyName;
public interface IPersonInfo {
// Name
@PropertyName("n")
public String getName();
public void setName(String name);
// Surname
@PropertyName("s")
public String getSurname();
public void setSurname(String surname);
// other properties...
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试以这种方式将其解码为JSON:
AutoBean<IPersonInfo> user = factory.user();
// clone the userDto (it's a new way to clone an object in ver 2.4.0
// instad of deprecated clone() method)
Splittable data = AutoBeanCodex.encode(user);
IPersonInfo userDto = AutoBeanCodex.decode(factory, IPersonInfo.class, data).as();
userDto.setName("Name");
userDto.setSurname("Surname");
//... other properties
Run Code Online (Sandbox Code Playgroud)
这段代码在遗留代码中完美运行.但现在(在GWT 2.4.0中)我得到一个例外:
java.lang.IllegalArgumentException: …Run Code Online (Sandbox Code Playgroud) 我有一个MKMapView(显然),它显示了用户周围的住房位置.
我有一个Radius工具,在进行选择时,应根据用户周围的距离添加/删除注释.
我有它添加/删除罚款,但由于某种原因,注释将不会显示,直到我放大或缩小.
这是根据距离添加/删除注释的方法.我尝试了两种不同的方法.
将新注释添加到数组,然后通过添加到地图[mapView addAnnotations:NSArray].
添加使用时找到的注释[mapView addAnnotation:MKMapAnnotation];
1.
- (void)updateBasedDistance:(NSNumber *)distance {
//Setup increment for HUD animation loading
float hudIncrement = ( 1.0f / [[[[self appDelegate] rssParser]rssItems] count]);
//Remove all the current annotations from the map
[self._mapView removeAnnotations:self._mapView.annotations];
//Hold all the new annotations to add to map
NSMutableArray *tempAnnotations;
/*
I have an array that holds all the annotations on the map becuase
a lot of filtering/searching happens. So for memory reasons it is
more …Run Code Online (Sandbox Code Playgroud) annotations ×10
java ×4
hibernate ×2
.net ×1
autobean ×1
c# ×1
exception ×1
gwt ×1
ios ×1
jpa ×1
maven ×1
mkannotation ×1
mkmapview ×1
objective-c ×1
properties ×1
spring ×1
static ×1
xcode ×1