这是我关于 setter 和 getter 的任务,由于某种原因它不起作用。谁能检查一下我的问题是什么?谢谢你。
public class FlightTest
{
public static void main (String [] args)
{
String name;
String number;
String Orig;
String Desti;
Scanner scan = new Scanner (System.in);
Flight data = new Flight ();
System.out.print ("Airline Name: ");
String AirlineName = scan.nextLine ();
data.setAirlineName (name);
System.out.print ("Flight Number: ");
String FlightNumber = scan.nextLine ();
data.setFlightNumber (number);
System.out.print ("Origin: ");
String Origin = scan.nextLine();
data.setOrigin (Orig);
System.out.print ("Destination: ");
String Destination = scan.nextLine ();
data.setDestination (Desti);
System.out.println (data); …Run Code Online (Sandbox Code Playgroud) 在使用JSF来开发使用NetBeans的Web应用程序时,我曾多次注意到在某些情况下,JSF ManagedBeand中的getter方法(以及可能的setter)也会被执行多次,而它们只打算执行一次.在这种情况下,有时执行某些操作(特别是某些计算)的某些关键条件(如果等)以防止它们被淹没是非常关键的.我一直在努力了解其背后的实际原因,但我不能.
在这里,我演示了一个非常简单的应用程序,其中有一个getter方法
public Collection<entity.Country> getCountries(){};
Run Code Online (Sandbox Code Playgroud)
调用远程EJB并从MySql数据库中的相关表中检索所有国家/地区并在JSF页面上显示.网页的屏幕截图如下所示.
没有必要对屏幕截图,JSF页面代码及其相应的ManagedBean付出太多和特别的关注.

这是JSF页面代码
<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Countries</title>
</h:head>
<h:body>
<h:form>
<center><br/><br/><br/>
<h:dataTable id="dataTable" styleClass="table" frame="box" value="#
{country.countries}" var="row" bgcolor="lightyellow" border="7"
cellpadding="7" cellspacing="7" rules="all" width="50%" dir="ltr">
<f:facet id="header" name="header">
<h:outputText value="~:Country:~" styleClass="tableHeader"/>
</f:facet>
<h:column>
<f:facet name="header">Country ID</f:facet>
<h:outputText id="countryID" value="#{row.countryID}"/>
</h:column>
<h:column>
<f:facet name="header">Country Name :</f:facet>
<h:outputText id="countryName" value="#{row.countryName}"/>
</h:column>
</h:dataTable>
</center>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
相应的简单JSF ManagedBean代码就在这里.
package country;
import commonBean.CommomBeanRemote;
import java.util.Collection;
import javax.ejb.EJB; …Run Code Online (Sandbox Code Playgroud) 所以我有以下代码,我试图添加某种类型的元数据,我想这是一个类的属性.我的想法是,我会有一个getter/setter,其中getter将返回一个float/int/string私有变量,但会返回一些额外的数据,例如详细的名称.
这完全有效,直到我使用setter,曾经使用的似乎忽略了setter和getter.
有谁知道为什么我在做什么不起作用?或者,如果有更好的方法去做我想做的事情?
非常感谢!
class Param(float):
def __new__(self,name,value):
return float.__new__(self,value)
def __init__(self,name,value):
self.__name = name
name = property(lambda self: self.__name)
class Beer:
def __init__(self, temp):
self.__T = temp
@property
def temp(self):
return Param('Beer Temperature', self.__T)
@temp.setter
def temp(self,value):
self.__T = float(value)
print b.temp.name, b.temp.__class__
print b.temp * 4.5
print b.temp.name, b.temp.__class__
b.temp = 101
print b.temp.name, b.temp.__class__
Run Code Online (Sandbox Code Playgroud) 我用 Lombok 进行注释。我需要覆盖其中一个属性的 setter 方法。但这是行不通的。
我已经注释了属性,@Setter(AccessLevel.NONE)然后显式调用setProperty。
下面提到豆子。
@Data
@AllArgsConstructor
@Slf4j
public class TestDto
{
private String code;
@Setter(AccessLevel.NONE)
private String nameCode;
public void setNameCode(String nameCode)
{
log.info(" nameCode {}", nameCode);
this.nameCode = <Call to some method>;
}
}
Run Code Online (Sandbox Code Playgroud)
在其中设置 bean 列表的 DTO。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestViewDto {
private List<TestDto> testDtoList;
.............Few more dto's..............................
}
Run Code Online (Sandbox Code Playgroud)
这是从服务线下调用的..
travelAgentViewDto.setTestDto(repository.findTestNumber(number);
Run Code Online (Sandbox Code Playgroud)
存储库接口定义如下:
public interface Repository extends JpaRepository<Address, AddressPk> {
public List<TestDto> findTestNumber(String number);
}
Run Code Online (Sandbox Code Playgroud)
代码工作正常。唯一的问题是当覆盖它时setNameCode不会进入 setter。
从 …
如果之前定义了属性,则 WebComponents 属性设置器不会触发。如下:
<foo-bar id='ele1'></foo-bar>
<foo-bar id='ele2'></foo-bar>
<script>
ele1.foo = 'hello';
class FooBar extends HTMLElement {
set foo(val) {
console.log(`set ${this.id} to ${val}`);
this._foo = val;
}
get foo() {
return this._foo
}
}
customElements.define('foo-bar', FooBar);
setTimeout(() => {
ele1.foo = 'world';
ele2.foo = 'world';
console.log(`ele1.foo is ${ele1.foo}`);
console.log(`ele2.foo is ${ele2.foo}`);
}, 1000);
</script>Run Code Online (Sandbox Code Playgroud)
控制台输出(set ele1 to world不是输出`):
set ele2 to world
ele1.foo is world
ele2.foo is world
Run Code Online (Sandbox Code Playgroud)
所以我必须Object.defineProperty这样观察属性:
set ele2 to world
ele1.foo is world …Run Code Online (Sandbox Code Playgroud)我经常使用二传手.这是我对此的代码:
.H:
@property (nonatomic, strong) NSDate *lastSyncDate;
Run Code Online (Sandbox Code Playgroud)
.M:
-(void)setLastSyncDate:(NSDate *)lastSyncDate {
_lastSyncDate = lastSyncDate;
//Do something
}
Run Code Online (Sandbox Code Playgroud)
然后我输入了一个getter方法:
-(NSDate *)lastSyncDate {
//Something happens
return lastSyncDate;
}
Run Code Online (Sandbox Code Playgroud)
然后_lastSyncDate标识符发出unidentified identifier错误.
我不确定为什么会这样?
我有一个名为"Turns"的班级,其所有成员都在公开场合.到目前为止,我还没有编辑过这个类的成员的值(只读),但我已经更改了其他头中其他类的值而没有问题.问题是,现在我想改变一个值,不管我怎么试,它似乎都不起作用.
Turns.h
#ifndef TURNS_H
#define TURNS_H
#include "Constants.h"
using namespace Constants;
#include <string>
using namespace std;
#include "utilities.h"
class Turns
{
public:
Turns();
void insertk(double val, int i);
int k[5]; // K denotes the fixed radius for R turns
double K[4];
string TPT; // F for fly-by turns. R for fix turns.
int headings[5]; // Measured from Arrival Airport Threshold
static const int hdgSIZE=5;
double thr2wpt[4]; // Measured from Arrival Airport Threshold
int phi_max[4];
double turnrate_max[4];
double scale;
double Deltachig[4]; …Run Code Online (Sandbox Code Playgroud) 是否可以选择为两个变量执行一个setter/getter?或者唯一的选择是两个单独的setter/getter,如下所示:
int var1;
int var2;
public int var1
{
get { return var1; }
set { var1 = value; }
}
public int var2
{
get { return var2; }
set { var2 = value; }
}
Run Code Online (Sandbox Code Playgroud) 我在类层次结构中有以下设计目标:
有BaseClass一些定义的属性,通常是读/写:
public class Media
{
public virtual object Content { get; set; }
public virtual double recordingLength { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
目的是有一些子类,其中此属性现在是只读的:
public class CompactDisk : Media
{
public override object Content
{
get { return this.getContent(); }
set {
// THERE SHOULDN'T BE A SETTER
}
}
public override double recordingLength
{
get { return 74; }
set {
// NO SETTER EITHER HERE!
}
}
}
Run Code Online (Sandbox Code Playgroud)
我迷失在这里,因为我不知道应该如何实现我的设计意图.
我们用if语句创建一个setter.我们试图限制批准的值,并使用print方法打印出设置的值,如果不接受该值,则使用"错误".
这是方法:
Public class Sykkel extends Kjøretøy
{
private int height;
public Sykkel(String colour)
{
// initialise instance variables
super(1, colour);
this.height = height;
}
public void setHeight (int height) {
if(height > 35 && height < 70){
System.out.println("Sykkelen er " + height + " cm høy.");
} else {
System.out.println("Wrong");
}
}
public int getHeight() {
return height;
}
Run Code Online (Sandbox Code Playgroud)
无论我们设置什么高度,它打印出"错误".有没有人在代码中看到错误?
我们已经尝试了这个.高度和高度,但结果仍然是一样的.
提前致谢.
setter ×10
getter ×5
java ×4
properties ×3
c# ×2
bluej ×1
c++ ×1
class ×1
if-statement ×1
inheritance ×1
ios ×1
iphone ×1
jsf ×1
lombok ×1
metadata ×1
objective-c ×1
polymorphism ×1
python ×1
spring-boot ×1
string ×1